我有课MyClass
我需要在其中创建一个std::array
of std::vector
在默认构造函数中。但是,此类有一个数据成员,它是一个引用(类型为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_;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)