C++ 使用附加变量从基构造函数初始化派生类

C++ 使用附加变量从基构造函数初始化派生类,c++,c++11,C++,C++11,假设我有一个基类-- 如何使派生类构造函数调用基构造函数,同时初始化它自己的附加变量?假设我只能修改派生库而不能修改Base(假设Base是我不想更改的库) 编辑 我收到的错误消息是: no matching constructor for initialization of Derived candidate constructor not viable: requires 2 arguments, but 1 was provided 这是一个更复杂的例子,我正在研究 这两个选项实际上都能

假设我有一个基类--

如何使派生类构造函数调用基构造函数,同时初始化它自己的附加变量?假设我只能修改派生库而不能修改Base(假设Base是我不想更改的库)

编辑 我收到的错误消息是:

no matching constructor for initialization of Derived
candidate constructor not viable: requires 2 arguments, but 1 was provided

这是一个更复杂的例子,我正在研究

这两个选项实际上都能正常工作。在C++中,派生类的对象包含基类的对象作为独立对象,以便允许多重继承。您将在创建正确的派生对象之前初始化它们。我分别使用两个构造函数使用g++编译了您的代码,并且都正确编译。我认为您的错误可能是由于其他原因。

这应该是可行的(假设您没有两个具有相同参数类型的
派生的
构造函数)。请编辑您的问题以添加您得到的确切错误消息。我在示例中有两个构造函数,哪一个应该工作?或者两者都有?您试过哪一个?两者都可以。@clwen您应该传递2个参数,而不仅仅是1个参数给
派生的
的构造函数。
class Derived : public Base {
 public:
   // This won't work, compiler will complain no viable constructor or so
   Derived(int n, int an) : Base(n), another_num(an) {};
   // This won't work either
   Derived(int n, int an) : Base(n) {another_num = an;}
 private:
  int another_num;
};
no matching constructor for initialization of Derived
candidate constructor not viable: requires 2 arguments, but 1 was provided