C ++ Vector问题“阻止匹配的限定符”

时间:2013-03-30 02:14:57

标签: c++ vector

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

1 个答案:

答案 0 :(得分:0)

问题是您以这种方式声明read_question

void Exam:: read_questions(string filename) const

这里的const表示你的函数不会修改你调用它的对象。然后在函数中执行此操作:

question_list.push_back(currentQuestion);

question_list是一个成员变量,所以你违背了你的诺言。编译器正在打电话给你。