私は以下のように、初期化リストをテストするための簡単なプログラムを持っている:派生クラスのC++初期化リストがコンパイルに失敗しました。なぜですか?
#include<stdio.h>
struct Base{
Base():m_i(2){}
int m_i;
};
struct Derived:Base{
Derived():m_i(3){}
};
int main()
{
Derived d;
return 0;
}
驚いたことに、それはコンパイルに失敗しました。 gccとclangの両方にエラーがあります:
1.cpp:7:15: error: member initializer 'm_i' does not name a non-static data member or base class
Derived():m_i(3){}
^~~~~~
どこが間違っていましたか?
何:
もう一つは、このように、単に変数を割り当てる代わりに、それを初期化することである:一つは、コンストラクタを使用して、それをパラメータとして、iの値を渡し、このようにすることですあなたは 'm_i'の価値があると思いますか? 3または2? – bejado