防止调用默认构造函数

时间:2019-04-10 03:20:56

标签: c++ constructor default

我的C ++类正在寻找另一个对象的默认构造函数,抛出错误。

我正在研究一个简单的C ++旧版应用程序。 在一个类中,我正在其头文件中声明另一个类的对象。

在类构造函数中,我试图调用其参数化的构造函数。

但是我的程序显示以下错误,因为没有默认构造函数。

派生类头文件

#pragma once
#include "Base.h"
class CDerived :
    public CBase
{
public:
    // CDerived(); // Commented this out
    CDerived(char a);
};

派生类源

#include "Derived.h"
// Only one constructor definition
CDerived::CDerived(char a)
    : CBase(1,2,3)
{
}

我的执行类头文件

#pragma once
#include "Derived.h"
class CExecute
{
public:
    CExecute();
private:
    CDerived d;
};

我的Execute类源文件

#include "Execute.h"
CExecute::CExecute()
{
    char rslt = SomeFunction();
    d(rslt);
}

错误消息

  1. “ CDerived”类不存在默认构造函数
  2. 在没有适当的operator()或没有将函数转换为指针到函数的类型的情况下调用类类型的对象
  3. “ CDerived”:没有合适的默认构造函数
  4. term的结果不等于带有1个参数的函数

为什么我选择调用参数化的构造函数时会出现此错误消息?

“标记重复”问题与初始化列表有关。 但是,我已经将初始化器列表用于派生类。所以我知道其工作原理。

我已经编辑了我的问题,以使其更加清楚。 基本上,如何为成员变量调用选择的构造函数?

0 个答案:

没有答案