2014-02-24 88 views
1

我的UML表示,getter方法的getName是字符串类型&和const (的getName():常量字符串&)的 所以在我的.h文件中我写字符串&引用返回类型C++?

public: 
std::string & getName() const; 
private: 
std::string name; 

,并在我的cpp文件

string & Class::getName() const 
{ 
return name; 
} 

当我尝试编译我.cpp文件我得到一个错误说:从类型的表达std::string& {aka std::basic_string<char>&}类型的引用无效初始化const string {aka const std::basic_string<char>}

如果我尝试将名称的返回值更改为&名称,我仍然收到错误消息。我不知道如何解决它。请帮助。

回答

7

您需要返回const参考:

const std::string& getName() const; 

否则即表示您授权通过const方法将一个对象的数据非const访问。

3

当您的成员函数是const时,它只有const访问成员变量。

因此,您不能将name绑定到该函数内的非const引用。

您的退货类型必须是const std::string&