我是C++ OOP概念的新手.我目前在getter和setter函数中使用字符串声明的问题.我使用eclipse IDE,我得到的错误是
error: cannot convert 'Student::getname' from type 'std::__cxx11::string (Student::)() {aka std::__cxx11::basic_string<char> (Student::)()}' to type 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}'
return getname;
代码如下:
#include<iostream>
#include<string.h>
using namespace std;
class Student
{
private:
    int rollno;
    string name;
    string school;
public:
void setrollno(int i)
{
    rollno =i;
}
void setname(string n)
{
    name =n;
}
void setschool(string s)
{
    school =s;
}
int getrollno()
    {
        return rollno;
    }
string getname()
{
    return getname;
}
string getschool()
{
    return school;
}
};
int main()
{
    Student A;
    A.setrollno(3);
    cout << A.getrollno();
    A.setname("vinod");
    cout << A.getname();
    A.setschool("carmel");
    cout << A.getschool();
}
谁能告诉我这是什么问题?
您的名称成员变量的名称是name和否getname.您应该更改getname()函数以返回正确的成员变量:
string getname()
{
    return name;
}
另外,我建议您查看const并参考以改进您的代码.例如,您可以返回/传递一些const引用(&)以避免复制.这是一篇很好的文章解释它:通过Value或Reference传递std :: string