我的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,我仍会收到错误消息。我不确定如何解决它。请帮忙。
答案 0 :(得分:7)
您需要返回const
引用:
const std::string& getName() const;
否则,您将通过const
方法授予对对象数据的非const访问权限。
答案 1 :(得分:3)
当您的成员函数为const
时,它只有const
个成员变量的访问权限。
因此,您无法将name
绑定到该函数内的非const
引用。
您的返回类型必须为const std::string&
。