0
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 个重载对带有 [ _Ty=Question * ] 的 'this' 指针 1 没有合法转换

这个错误是什么意思,我该如何解决?

这是考试的头文件:

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;
};
4

1 回答 1

0

问题是你read_question这样声明:

void Exam:: read_questions(string filename) const

这里const的意思是你的函数不会修改你调用它的对象。然后在函数中,你这样做:

question_list.push_back(currentQuestion);

question_list是一个成员变量,所以你违背了你的诺言。编译器正在调用它。

于 2013-03-30T02:36:32.327 回答