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

时间:2016-02-22 14:31:25

标签: 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();
}

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

1 个答案:

答案 0 :(得分:5)

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

string getname()
{
    return name;
}

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