getter 中返回字符串引用的正确方法

Jea*_*ffe 2 c++ syntax getter-setter

我有一个带有字符串属性的类,我的 getter 必须返回这些属性的 string& 值。

\n\n

我设法做到这一点而没有出现错误的唯一方法是这样的:

\n\n
inline string& Class::getStringAttribute() const{\n    static string dup = stringAttribute;\n    return dup;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 C++ 中编写返回私有字符串属性的字符串引用的 getter 的正确方法是什么?

\n\n

这样做:

\n\n
inline string& Class::getStringAttribute() const{\n    return stringAttribute;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

给我这个错误:

\n\n
error: invalid initialization of reference of type \xe2\x80\x98std::string& {aka std::basic_string<char>&}\xe2\x80\x99 from expression of type \xe2\x80\x98const string {aka const std::basic_string<char>}\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n

edw*_*inc 5

返回副本或 const 引用:

std::string get() const         { return s_; }
const std::string& get() const  { return s_; }
Run Code Online (Sandbox Code Playgroud)

  • 人们在寻找问题答案时仍然会阅读这篇文章。我发布的原因是“官方”答案说返回一个“常量字符串”,这不是一个理想的答案。我正在为刚学习 c++ 的人澄清这一点。 (4认同)