Объясните плзз, почему j нормально инициализируется, а i ругается
class a
{
protected:
int i;
int j;
};
class b: public a
{
public:
b();
};
b::b()
: i(1)
{
j = 2;
};
Здравствуйте, Аноним, Вы писали:
А>Объясните плзз, почему j нормально инициализируется, а i ругается
Потому что в списке инициализации класс может инициализировать только собственные данные-члены и базовые подобъекты.
Добавь в класс
a соответствующий конструктор и вызывай его из списка инициализации
b.
Здравствуйте, shank, Вы писали:
А>>Объясните плзз, почему j нормально инициализируется, а i ругается
S>Потому что в списке инициализации класс может инициализировать только собственные данные-члены и базовые подобъекты.
S>Добавь в класс a соответствующий конструктор и вызывай его из списка инициализации b.
Спасибо!
так слишком просто
а рзве после наследования данные члены родителя не переходят к наследнику?
Здравствуйте, Аноним, Вы писали:
А>а рзве после наследования данные члены родителя не переходят к наследнику?
Переходят. Но инициализировать все же нельзя, наверно, потому что конструктор базового подобъекта всегда отрабатывает, явно или неявно. В этом случае может получиться так, что переменная
инициализируется дважды, чего в С++ не бывает.
Здравствуйте, shank, Вы писали:
А>>а рзве после наследования данные члены родителя не переходят к наследнику?
S>Переходят. Но инициализировать все же нельзя, наверно, потому что конструктор базового подобъекта всегда отрабатывает, явно или неявно. В этом случае может получиться так, что переменная инициализируется дважды, чего в С++ не бывает.
Спасибо, вроде въехала!