我有一个 MyClass
类,我需要在其中的默认构造函数中创建一个 std::vector
的 std::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/