C++ 如何声明默认构造函数

C++ 如何声明默认构造函数,c++,mfc,C++,Mfc,我有一个基类,我不能修改源代码。我从它生成一个派生类,并尝试为这个派生类生成一个无参数构造函数。问题是我无法定义构造函数,原因有两个: 没有为基类定义非参数构造函数来使用它。 我无法传递基的构造函数的默认值 class base { public: base (A arg) { } }; class derived : public base { public: derived () : base (

我有一个基类,我不能修改源代码。我从它生成一个派生类,并尝试为这个派生类生成一个无参数构造函数。问题是我无法定义构造函数,原因有两个: 没有为基类定义非参数构造函数来使用它。 我无法传递基的构造函数的默认值

  class base
  {
      public:
      base (A arg)
      {

      }
  };

  class derived : public base
  {
      public:
      derived () : base (arg)  //ERROR
      {

      }
  };
有没有为派生类定义无参数构造函数的解决方案?
cordalement,

由于无法更改基类,所以剩下的唯一选项是将参数传递给其构造函数。通过构造
a
的临时实例并将其传递给派生类列表中的基类,您可以非常轻松地实现这一点

derived::derived () : base (A())
{
}

在上面的代码中,
base(A())
将创建一个
A
的临时实例,并将其传递给
base

的构造函数,您别无选择,只能找到一个合适的
A
对象,您可以传递给
base
的构造函数。否。您需要找到一种方法将
a
对象传递给
base(a)
“我不能传递基的构造函数的默认值。”-为什么不能?这是人为的限制还是你不知道怎么做?即使有可能,你为什么要这么做?派生对象的“基本部分”将是垃圾,可能使您进入UB领域。您最好将一些默认参数传递给基构造函数,然后在派生代码中不使用它,如果您打算这样做的话。