繁体   English   中英

将默认构造函数更改为参数化

[英]Changing default constructor to parameterized

我有一个带有默认构造函数的“ SetupModel”类。 现在,我必须在此构造函数中包含一个参数。 所以应该这样

class SetupModel
{
public:
   SetupModel(MyData::ValueSystem& valueSystem);

因此,我试图更改此类SetupModel的所有引用。

但是在另一类中,这被称为

class  SetupManager
{
 private:
   SetupModel _model;

出现错误“没有合适的默认构造函数”

我该如何更改?

class  SetupManager
{
  SetupManager(...) : _model(valuesystemarg), ...
  {
     ...
  }
 private:
   SetupModel _model;

使用初始化程序列表初始化此成员。

或将默认的无参数构造函数添加到SetupModel构造函数。

添加默认构造函数的定义

class SetupModel
{
public:
   SetupModel(MyData::ValueSystem& valueSystem);
   SetupModel();
}

您手边有2个选项

  1. 如果你喜欢使用默认的构造函数没有施工的过程中使用的参数SetupManager ,你可以定义中的一个多个构造SetupModel不带参数
class SetupModel
{
public:
   SetupModel(MyData::ValueSystem& valueSystem);
   SetupModel() {};

因此,您无需在SetupManager进行更改。

  1. 如果您更喜欢使用带有参数的SetupModel构造函数作为SetupManager基类构造函数,则可以在SetupManager构造函数中使用初始化列表。 然后,您无需在SetupModel进一步更改
class  SetupManager
{
    SetupManager(...) : _model(valuesystemarg), ...
    {
       ...
    }
private:
     SetupModel _model;

您可以根据需要拥有任意数量的构造函数,但是如果想要的只是一个构造函数,则可以在.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中,您使用“ =”来分配该值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM