void Exam:: read_questions(string filename) const{
ifstream file;
file.open(filename);
if (file.is_open()){
string line;
while(getline(file,line)){
Question* currentQuestion = parse_question(line);
question_list.push_back(currentQuestion);
}
}else{
cout << "invalid file" << endl;
}
file.close();
}
行question_list.push_back(currentQuestion);
出现问题时,会出错
没有重载功能的实例
并且还说
push_back':2个重载没有'this'指针的合法转换 1用 [ _Ty =问题* ]
这个错误是什么意思,我该如何解决?
以下是考试的标题文件:
class Exam
{
public:
Exam();
Exam(int num_q, int min_chap, int max_chap);
void read_questions(string filename) const;
~Exam();
void write_exam(string filename) const;
void write_key(string filename) const;
void shuffle();
private:
vector<Question *> question_list;
int minC;
int maxC;
int numQ;
};
答案 0 :(得分:0)
问题是您以这种方式声明read_question
:
void Exam:: read_questions(string filename) const
这里的const
表示你的函数不会修改你调用它的对象。然后在函数中执行此操作:
question_list.push_back(currentQuestion);
question_list
是一个成员变量,所以你违背了你的诺言。编译器正在打电话给你。