我有一个带有默认构造函数的“SetupModel”类。现在我必须在这个构造函数中包含一个参数。所以它应该是,
class SetupModel
{
public:
SetupModel(MyData::ValueSystem& valueSystem);
所以我试图更改此类SetupModel的所有引用。
但在另一个类中,这被称为,
class SetupManager
{
private:
SetupModel _model;
收到错误“没有合适的默认构造函数”
我该如何更改?
答案 0 :(得分:6)
class SetupManager
{
SetupManager(...) : _model(valuesystemarg), ...
{
...
}
private:
SetupModel _model;
使用初始化列表初始化此成员。
或者将默认的无参数构造函数添加到SetupModel
构造函数。
答案 1 :(得分:2)
添加默认构造函数的定义
class SetupModel
{
public:
SetupModel(MyData::ValueSystem& valueSystem);
SetupModel();
}
答案 2 :(得分:1)
您手头有两个选项
SetupManager
的构造,您可以在SetupModel
中添加一个不带参数的构造函数class SetupModel { public: SetupModel(MyData::ValueSystem& valueSystem); SetupModel() {};
因此您无需在SetupManager
中进行更改。
SetupModel
构造函数作为SetupManager
的基类构造函数,则可以在SetupManager
的构造函数中使用初始化列表。然后你不需要在SetupModel
class SetupManager { SetupManager(...) : _model(valuesystemarg), ... { ... } private: SetupModel _model;
答案 3 :(得分:0)
您可以拥有任意数量的构造函数,但如果您想要的只有一个,那么您可以在.h或.cpp中设置默认值
在.h:
class SetupManager
{
SetupManager() : _model(value), // here you can set all variables u want separated by a coma
private:
SetupModel _model;
}
在cpp:
SetupManager::SetupManager():
{
_model = value;
}
小心,所以.h中的值是"("和")"而在cpp中你使用" ="分配值