class A {
public:
A(int) {
cout << "Base class" << endl;
}
};
class B : virtual public A {
public:
virtual void do_something() = 0;
};
class C : public B {
public:
C()
: A(1) {
cout << "C class" << endl;
}
virtual void do_something() {
}
};
編譯器錯誤:創建用於C的對象時,編譯器產生的錯誤,如多層次繼承構造函數執行
error: no matching function for call to ‘A::A()’
爲什麼編譯器預計A級的默認構造函數?
感謝上帝的鐺格式。 – chris
閱讀這些概念的ISOCPP FAQ部分http://isocpp.org/wiki/faq/proper-inheritance&http://isocpp.org/wiki/faq/basics-of-inheritance –
[哪個編譯器?](http ://coliru.stacked-crooked.com/a/c0d980808c205ea9) – chris