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

Member function of a class isn't recognized in a function

本文关键字:函数 成员 识别      更新时间:2023-10-16

我有一个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();
}
 Student st();

应该是:

 Student st;

Student st(); 不会创建st类型的对象,Student它声明一个名为 st 的函数,该函数不带任何参数并返回一个Student对象。

这有时在C++中被称为最令人烦恼的解析

st的声明中删除括号。

Student st();
  • 非工作演示
  • 工作演示