gpt4 book ai didi

C++:将引用成员初始化为在初始化列表中创建的对象

转载 作者:太空狗 更新时间:2023-10-29 19:59:46 25 4
gpt4 key购买 nike

考虑以下代码:

class Foo {
Foo() {}
};

class Bar {
Foo &Foo_ref;
Bar() : Foo_ref() {}
};

照原样执行,我得到错误:

tmp.cc: In constructor Bar::Bar():tmp.cc:7: error: value-initialization of Foo& Bar::Foo_ref, which has reference type

我已经尝试了所有我能想到的变体。我究竟做错了什么?如何将引用成员初始化为新实例?我现在使用 const 指针而不是引用作为解决方法,但我更愿意使用引用。

最佳答案

引用必须始终绑定(bind)到对象。您必须在构造函数中传递要引用的对象

Bar(Foo &foo) : Foo_ref(foo)
{
}

如果您不想(或不能)将 Foo 传递给 Bar 构造函数 - 您必须使用指针:

class Bar {
Foo *Foo_ptr;
Bar() : Foo_ptr(nullptr) {}
};

您可以将引用成员变量视为必须绑定(bind)在初始化列表中的指针

关于C++:将引用成员初始化为在初始化列表中创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11338472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com