如果我们有这个类的定义
class BusDetails
{
private:
string m_busName;
public:
string BusName() const { return m_busName; }
};
如何更改或使用getter方法,以便将返回值用作左值会导致编译器错误?
例如,如果我像这样使用
int main(void)
{
BusDetails bus;
bus.BusName() = "abc"; // <--- This should give a compiler error
cout << bus.BusName() << endl;
return 0;
}
我没有收到编译器错误,因此显然赋值有效,但结果与预期不符。
更新:此行为是内置类型所预期的(即,如果我将
int
作为返回类型而不是string
,则编译器会在上述代码行给出错误)。 最佳答案
BusName()
被声明为const函数。因此它不能更改成员。
您的函数应返回string&
而不是const。
string& BusName() { return m_busName; }
另外,您可以添加const对象(
this
是const):const string& BusName() const { return m_busName; }
关于c++ - 如何编写getter方法以使其返回右值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20373236/