You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确将Bar实例中的Foo指针以引用方式传入函数?

解决方案:通过Bar指针调用接收Foo引用的函数

先把你给出的代码整理成更清晰的形式:

class Foo { public: int x; };
class Bar { public: Foo *foo; };

// 创建Bar实例
Bar *bar; 
bar = new Bar();

// 需要调用的目标函数
void func(Foo &foo);

要通过bar->foo正确调用func,核心是完成指针到引用的转换,具体写法很简单:

func(*(bar->foo));

为什么这么写?

  • bar->foo是Foo*类型的指针,它只存着Foo对象的内存地址;
  • 而func需要的参数是Foo&——也就是Foo对象的引用(可以理解为对象的"别名");
  • 用*运算符解引用指针,就能获取到指针指向的实际Foo对象,C++会自动把这个对象转换成对应的引用类型传递给func。

重要提醒:空指针防护

实际开发里一定要注意,如果bar本身是空指针,或者bar->foo是空指针,直接解引用会触发未定义行为(比如程序崩溃)。所以建议先做空指针检查:

if (bar != nullptr && bar->foo != nullptr) {
    func(*(bar->foo));
}

这样就能避免因为空指针导致的意外问题啦~

内容的提问来源于stack exchange,提问作者gornvix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:23:36