以下のコード(main.cpp)でVisual Studio Express 2015 windows desktopでデバッグ実行すると良く分からないエラーが出てxstringというファイルが表示されます(このxstringとは一体何なのかも分かっていません)。
デバッグ無し実行するとmain関数の最終行のprintallstudentsまでは問題なく進んでいることが分かるので、
Student::Print();関数でcout出力がうまくいっていないのだろうと大体の予測はつくのですが具体的にどうすればエラーが無くなるのかが分かりません。
どなたか知恵をお貸しください。
ちなみに以下のコードはこのページの下部の問題の解答として僕が書いたコードです。http://ppp-lab.sakura.ne.jp/Programming ... e/011.html
#include<string>
#include<iostream>
class Student {
std::string name; //名前
int grade; //学年
int score; //得点
public:
void SetData(std::string str, int grade, int score);
void Print();
int getGrade();
};
void Student::SetData(std::string str, int grade, int score) {
this->name = str; //ポインタ変数からのメンバ関数の呼び出しにはアローを用いる
this->grade = grade;
this->score = score;
}
void Student::Print() {
std::cout << name <<std::endl;
std::cout << grade << std::endl;
std::cout << score << std::endl;
}
int Student::getGrade() {
return grade;
}
class Teacher {
std::string name;
int grade;
int student_num=0;
Student* studentsList[40];
public:
void setData(std::string name, int grade);
void setStudent(Student* stu_ptr);
void printAllStudents();
};
void Teacher::setData(std::string name, int grade) {
this->name = name;
this->grade = grade;
}
void Teacher::setStudent(Student* stu_ptr) {
if (stu_ptr->getGrade() == this->grade) {
std::cout << "生徒追加" << std::endl;
studentsList[student_num] = stu_ptr;
student_num++;
}
else {
std::cout << "生徒追加失敗" << std::endl;
}
}
void Teacher::printAllStudents() {
for (int i = 0; i < 40; i++) {
studentsList[i]->Print();
}
}
int main(void) {
Student s[2];
s[0].SetData("Taro", 2, 60);
s[1].SetData("Hanako", 2, 80);
Teacher t;
t.setData("ひろこ", 2);
t.setStudent(&s[0]);
t.setStudent(&s[1]);
t.printAllStudents();
return 0;
}