У меня есть простая программа для проверки списка инициализации, как показано ниже:Не удалось скомпилировать список инициализации производного класса на 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){}
^~~~~~
Где я ошибался и как это исправить?
Что вы ожидаете значение 'm_i'? 3 или 2? – bejado