Я около 20 минут возился с программой и обнаружил, что по какой-то причине она не позволяет мне использовать унаследованные переменные в списках инициализации. Эта программа, например:
class A {
protected:
int i;
};
class B : public A {
public:
B() : i(45) { }
};
int main() {
B b;
}
выдаст ошибку
ошибка: в классе "B" нет поля с именем "i"
Однако, если вы измените конструктор на это:
B() { i = 45; }
Компилируется.
Я никогда не знал, что вы не можете инициализировать унаследованные переменные. У меня вопрос, почему?