【问题标题】:string & reference return type c++?字符串和引用返回类型 C++?
【发布时间】:2014-02-24 22:16:57
【问题描述】:

我的 uml 说 getter 方法 getName 的类型是 string & 和 const (getName(): 常量字符串 &) 所以在我的 .h 文件中我写了

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

在我的 .cpp 文件中

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

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

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

【问题讨论】:

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


    【解决方案1】:

    您需要返回一个const 参考:

    const std::string& getName() const;
    

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-08
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 2019-04-10
        • 2021-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多