我有以下foo类的成员。
foo &foo::bar()
{
return this;
}
但我收到编译错误。我做错了什么蠢事?
编译器错误(gcc):错误:'foo&'类型的非const引用的初始化无效来自临时类型'foo * const'
答案 0 :(得分:24)
this
是一个指针。所以它应该是return *this;
答案 1 :(得分:7)
正如Naveen所指出的,你需要返回*this
。
只是一个快速的提示:一种方法来弄清楚有些模糊的编译器错误意味着尝试编译不同的编译器,看看是否有更好的消息。例如,您可以使用Comeau online。
在这种情况下,它给出:
"ComeauTest.c", line 7: error: initial value of reference to non-const must be an
lvalue
return this;
^
在这种情况下不确定它会更好 - 但在某些情况下,消息会更好。