2017-06-17 14 views
-1

何らかの理由で、私のコードでStudentのオブジェクトを作成するときにコンストラクタが何度も繰り返し入力されています。私は以下のコンストラクタとコードにcout文を入れます。なぜこれが起こっているのかの助けは素晴らしいでしょう。カスタムオブジェクトのコンストラクタがループの外側でループしています

//Student.cpp 
Student::Student() { 
    ID = 0; 
    name = "name"; 
    cout << "student constructor" << endl; 
} 

Student::Student(int id, string name) { 
    ID = id; 
    name = this->name; 
    cout << "student con 2" << endl; 
} 




//part of SortedList.cpp just incase it is needed 
template <class ItemType> 
SortedList<ItemType>::SortedList() { 
    cout << "In the default constructor" << endl; 
    Max_Items = 50; 
    info = new ItemType[Max_Items]; 
    length = 0; 

//SortedList(50);//Using a default value of 50 if no value is specified                            

} 

//Constructor with a parameter given                                     

template <class ItemType> 
SortedList<ItemType>::SortedList(int n) { 
    cout << "in the non default constructor" << endl; 
    Max_Items = n; 
    info = new ItemType[Max_Items]; 
    length = 0; 
    cout << "At the end of the non default constructor" << endl; 
} 






/The part of the driver where this is called 
ifstream inFile; 
    ofstream outFile; 
    int ID; //what /below                                        
    string name; //these werent here                                     
    inFile.open("studcommands.txt"); 
    outFile.open("outFile.txt"); 
    cout << "Before reading commands" << endl; 
    inFile >> command; // read commands from a text file                                
    cout << "After reading a command" << endl; 
    SortedList<Student> list;//() was-is here                                   
    cout << "List has been made" << endl; 
    Student StudentObj; 
    cout << "Starting while loop" << endl; 
    while(command != "Quit") {...} 

//少しでもセグメンテーションフォルトのコアダンプを取得しています。

更新私のリストを作るのは何年かの間、私のリストの長さに30を入力すると、30スロットの配列を作成するのではなく、コンストラクタが30xと入力されるということです。この理由は何でしょうか?私は過去にこの問題について聞いたことがあるかのように感じます。

+0

警告が有効になっている状態で最初にビルドしてください(まだ取得していない場合)。何か問題が発生した場合は、何を意味するのか、修正するために何ができるのか把握してください。次に、[小さなプログラムのデバッグ方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を読んでください。 –

+0

配列の場合はなぜそれをリストと呼びますか? –

+0

私の教授からコードを与えられました –

答えて

0

SortedListコンストラクタでは、入力サイズItemTypenewの配列を作成します。この配列の要素は、配列の構築時にデフォルトで構築されます。そのため、あなたのStudentコンストラクタが配列時間のサイズと呼ばれています。

+0

ああ大丈夫です。何らかの理由で私は記憶の中の空間が開かれたという印象を受けました。ありがとうございました! –

関連する問題