Здравствуйте, nen777w, Вы писали:
N>В чём заключается причина не компиляции следующего кода.
N>(Если убрать virtual — наследование то всё будет компилироваться)
N>Мне просто интересно почему в случае с virtual компилятору понадобился default — конструктор?
Конструктор базового виртуального класса должен вызываться из конструктора полного объекта (most derived класса)
N>N>class Base
N>{
N>public:
N> Base( int n ) : m_n(n) {}
N>private:
N> int m_n;
N>};
N>class Derived : public virtual Base
N>{
N>public:
N> Derived( int n ) : Base( n ) {}
N>};
N>class SubDerived : public Derived
N>{
N>public:
N> SubDerived( int n, int m ) : Derived( n ), Base( n ) {}
N>};
N>