c++ - C++ 中的自定义类型引用成员 - 初始化它们

标签 c++ reference

这段代码让我头疼。就个人而言,我想使用引用,因为它们比指针更整洁,所以我尝试了这个:

include "SomeClass.h"

class FooBar 
{
   private:
     SomeClass& member_;

   public:
     FooBar() : member_(SomeClass()) { };
}

我读到你需要为类成员引用分配一个临时变量,所以在这种情况下我创建了一个虚拟的 SomeClass() (我不确定我是否在这里做。我试过和无需指定默认构造函数)。但是在VS 2005中编译不了,说member_不能初始化。

我应该怎么做? 提前致谢!

最佳答案

您只能将 temp 绑定(bind)到 const 引用。所以如果你把它改成

const SomeClass& member_;

你会没事的。

不过,您可能不想要这个;你要么应该将 member_ 声明为一个值,而不是引用,或者,如果你想要它作为一个引用,你可能想要传递一个对你的构造函数的引用,比如

FooBar(SomeClass& sc) : member_(sc) { };

关于c++ - C++ 中的自定义类型引用成员 - 初始化它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1067535/

相关文章:

c++ - 设计模式中对象中过程(方法和操作)的状态

java - 在凯撒密码中引用数组中的字符

java - 如何在不使用递归的情况下实现双向实体引用,示例如下

c++ - 标准最新草案第 §8.5.3/5 段中的要点 (5.2.2.1) 中的 "user-defined conversions are not considered"是什么意思?

c++ - 由于 ADL,对模板函数的调用不明确

c++ - 如何从 Rust 调用 C++ Arduino 库?

c++ - 尝试在注册表中创建值 - C++ - RegSetValueEx

c++ - VideoCapture 使用 OpenCV 3.0.0-rc1 选择超时

c# - 缺少系统.Windows

编译器级别的 C++ 引用和指针