Виртуальный базовый класс
От: Waylander123  
Дата: 10.03.14 16:03
Оценка:
Доброго времени суток!

Допустим, есть такая иерархия:
struct Base
{
Base(int){}
};
 
struct Der:virtual Base
{
Der(int):Base(0){}
};
 
struct Derived:Der, Base
{
//Derived(int):Base(0),Der(0),Base(1){}
};


Как здесь инициализировать базовые классы в конструкторе Derived? Ведь по сути тут нужно инициализировать 2 класса Base — виртуальный, который в части Der, и прямой базовый, и возникает что-то вроде неоднозначности. Пишет "error: ‘struct Base’ is both a direct base and an indirect virtual base" (Base является как прямым базовым классом, так и косвенным виртуальным базовым классом), но насколько я знаю, по стандарту такое возможно. И действительно, если конструктор Base сделать по умолчанию, ошибок никаких не выдает, т.к. в таком случае явный вызов конструктора Base можно не писать. Но как быть, если конструктор принимает один или несколько параметров?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.