c++ - 具有引用数据成员的类的默认构造函数?

标签 c++ reference default-constructor class-members

我有一个 MyClass 类,我需要在其中的默认构造函数中创建一个 std::vectorstd::array。但是,此类有一个数据成员,它是一个引用(Something 类型),它也需要在构造函数中初始化,我不能在默认构造函数中执行此操作。

我该如何解决?

class MyClass{
public:
    MyClass(); //Cannot instantiate s??
    MyClass(Something& s);
    Something& s;
}

MyClass array[10];   // MyClass needs a default constructor but a default 
                     // constructor won't be able to initialize s

最佳答案

具有引用成员的类需要在其构造函数中设置引用。在大多数情况下,这意味着该类不能有默认构造函数。解决问题的最佳方法是使用指针而不是引用:

class MyClass{
public:
    MyClass() : s_(0) {}
    MyClass(Something* s) : s_(s) {}
    Something* s_;
}

关于c++ - 具有引用数据成员的类的默认构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22875186/

相关文章:

c++ - 如何减少这个问题的执行时间(即更快的代码)

c++ - 超出范围后传递给构造函数的值发生了什么?

flutter - 如何在 flutter 中初始化 WebView Controller

c++ - 无法修复对 vtable 的 undefined reference

c++ - 尝试减少执行时间但失败

visual-studio - 有效负载包含两个或多个具有相同目标路径的文件 'System.Diagnostics.Tools.dll'

reference - 如何为对结构的引用实现 Add 特性?

c++ - 成功返回局部变量的引用

c++ - 使用不同的构造函数重新分配对象

c++ - 在构造函数上 union 使用已删除函数的类