函数中无法识别类的成员函数

时间:2012-05-26 16:19:59

标签: c++

我有一个clss学生,我在存储库的相同标题中使用它的成员函数没有问题...但是现在在这个函数中我得到一个错误:

..\StudentRepository.cpp:22:7: error: request for member 'setName' in 'st', which is of non-class type 'Student()'

这就是功能:

void StudentRepository::loadStudents(){
    ifstream fl;
    fl.open("studs.txt");
    Student st();
    string s,ss;
    int loc;
    if(fl.is_open()){
        while(!(fl.eof())){
            getline(fl,s);
            loc = s.find(",");
            ss = s.substr(0,loc);
            st.setName(ss);

        }
    }
    else{
        cout<<"~~~ File couldn't be open! ~~~"<<endl;
    }
    fl.close();

}

我必须提到,在同一个文件中我使用它们,例如这个函数:

 void StudentRepository::editStudent(Student A){
    int i;
    i = findByName(A.getName());
    if( i != 0 || i != NULL){
        students[i].setGroup(A.getGroup());
        students[i].setId(A.getID());
    }
    else{
        throw RepoException("The name does not exist!");
    }
    saveStudents();
}

2 个答案:

答案 0 :(得分:4)

 Student st();

应该是:

 Student st;

Student st();不会创建st类型的对象Student,它会通过名称st声明一个函数,该函数不带参数并返回Student宾语。

这在C ++中有时被称为 Most Vexing Parse

答案 1 :(得分:4)

st的声明中删除括号。

Student st();