字符串&引用返回类型c ++?

时间:2014-02-24 22:16:58

标签: c++ c++11 reference return-value

我的uml说getter方法getName的类型为string&和const (getName():const string&) 所以在我的.h文件中我写了

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

和我的.cpp文件

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

当我尝试编译我的.cpp文件时,我收到一条错误消息:从std::string& {aka std::basic_string<char>&}类型的表达式<{1}}类型的引用无效初始化

如果我尝试将名称的返回值更改为&amp; name,我仍会收到错误消息。我不确定如何解决它。请帮忙。

2 个答案:

答案 0 :(得分:7)

您需要返回const引用:

const std::string& getName() const;

否则,您将通过const方法授予对对象数据的非const访问权限。

答案 1 :(得分:3)

当您的成员函数为const时,它只有const个成员变量的访问权限。

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

您的返回类型必须为const std::string&