类成员函数返回类自身引用的问题

BillLeecn 2010-02-12 08:33:23
class Ca
{
int i;
public:
Ca& ref(){return this;}
}
int main()
{
Ca a;
Ca& ra=a.ref();
}

编译提示invalid initialization of non-const reference of type 'std::Ca&' from a temporary of type 'std::Ca* const'
这怎么办?
我用了很多类型转换的方法都弄不好
...全文
751 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落的凡凡 2010-02-12
  • 打赏
  • 举报
回复
*和&在“定义”和“使用”时是有不同意义的。


int *p;//这里是定义,'*'表示p是一个指针
int a;
p =&a;// 这里不是定义 '&'表示取地址
*p = 1;// 这里不是定义 '*' 表示解引用
int &r = a; // 这里是定义, '&'表示r是一个引用
失落的凡凡 2010-02-12
  • 打赏
  • 举报
回复
this是个指针, 改成return *this;就对了
go_Michael 2010-02-12
  • 打赏
  • 举报
回复
&this在这里&表示取地址符 返回的话应该是*this 表示对象本身

int m;
int &n=m;
这里&表示引用 对n的操作就是间接对m的操作
BillLeecn 2010-02-12
  • 打赏
  • 举报
回复
引用 5 楼 go_michael 的回复:
&this 是指针的地址 这是二级指针 更复杂了

我晕了,我怎么记得*a是到a的指针,&p是指针p的间访?
yzx714 2010-02-12
  • 打赏
  • 举报
回复
另外,类定义结束需要;
go_Michael 2010-02-12
  • 打赏
  • 举报
回复
&this 是指针的地址 这是二级指针 更复杂了
昵称很不好取 2010-02-12
  • 打赏
  • 举报
回复
class Ca
{
int i;
public:
Ca& ref(){return *this;} //这样可以,注意引用与指针的区别
};

int main(){
Ca a;
Ca& ra=a.ref();
return 0;
}
BillLeecn 2010-02-12
  • 打赏
  • 举报
回复
这次我改成Ca& ref(){return &this;}
用指针间访,可是这回它提示lvalue required as unary ‘&’ operand
这又怎么回事?
不是左值?
enjolras 2010-02-12
  • 打赏
  • 举报
回复
编译器的提示是:不能将一个const指针转换为一个非const的引用,楼上说的很明白了,一个是指针,一个是引用。
go_Michael 2010-02-12
  • 打赏
  • 举报
回复
this 本质是个指针 返回Ca& 是不对的

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧