c ++ init член суперкласса в конструкторе

Я не понимаю, почему мой член не инициализирован. У меня есть что-то вроде этого:

class A
{
public:
A() {member = 0;}
int getMember() {return member;}
protected:
int member;
}

а также

class B : public A
{
public:
B() : A() {member = 10;}
}

Когда я пытаюсь получить значение член из B это всегда 0.
Что мне здесь не хватает?

Спасибо!

РЕДАКТИРОВАТЬ: Ctor сейчас публичный.

2

Решение

Я попробовал две вещи, и они обе дают ожидаемый результат:

class A
{
public:
A() {member = 0;}
int getMember() {return member;}
protected:
int member;
};

class B : public A
{
public:
B() : A() {member = 10;}
};

int main() {
A* a = new B();
cout << a->getMember() << endl;
B b;
cout << b.getMember() << endl;
return 0;
}

Это возвращает

output:
10
10

Вы можете проверить код на http://ideone.com/FArIAC

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]