何らかの理由で、私のコードで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と入力されるということです。この理由は何でしょうか?私は過去にこの問題について聞いたことがあるかのように感じます。
警告が有効になっている状態で最初にビルドしてください(まだ取得していない場合)。何か問題が発生した場合は、何を意味するのか、修正するために何ができるのか把握してください。次に、[小さなプログラムのデバッグ方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を読んでください。 –
配列の場合はなぜそれをリストと呼びますか? –
私の教授からコードを与えられました –