无法在C++代码中调试字符串转换事物

vin*_*nod 0 c++ string c++11

我是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();
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这是什么问题?

Jér*_*ucq 5

您的名称成员变量的名称是name和否getname.您应该更改getname()函数以返回正确的成员变量:

string getname()
{
    return name;
}
Run Code Online (Sandbox Code Playgroud)

另外,我建议您查看const并参考以改进您的代码.例如,您可以返回/传递一些const引用(&)以避免复制.这是一篇很好的文章解释它:通过Value或Reference传递std :: string