我是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();
}
有谁能告诉我这是什么问题?
答案 0 :(得分:5)
您的名称成员变量的名称是name
而不是getname
。您应该更改getname()
函数以返回正确的成员变量:
string getname()
{
return name;
}
另外,我建议您查看const
并参考以改进您的代码。例如,您可以返回/传递一些const
引用(&
)以避免复制。这是一篇很好的帖子,可以解释它:Passing std::string by Value or Reference