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:对于带有_Ty=Question *的“this”指针1,2个重载没有合法转换。
这个错误意味着什么?我如何修复它?
下面是要检查的头文件:
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;
};发布于 2013-03-30 02:36:32
问题在于您以这种方式声明read_question:
void Exam:: read_questions(string filename) const这里的const是说您的函数不会修改调用它的对象。然后在函数中,您执行以下操作:
question_list.push_back(currentQuestion);question_list是一个成员变量,所以您违背了您的承诺。编译器在上面打电话给你。
https://stackoverflow.com/questions/15714176
复制相似问题