我得到的錯誤:沒有適當的默認構造函數B.但是,我不明白爲什麼編譯器想調用默認構造函數,當我給參數ii和DONT要調用默認。繼承:沒有適當的默認構造函數可用
#include <iostream>
using namespace std;
class A {
int i;
public:
A(int ii) { i = ii; cout << "Constructor for A\n"; }
~A() { cout << "Destructor for A\n"; }
void f() const{}
};
class B {
int i;
public:
B(int ii) { i = ii; cout << "Constructor for B\n"; }
~B() { cout << "Destructor for B\n"; }
void f() const{}
};
class C:public B {
A a;
public:
C() { cout << "Constructor for C\n"; }
~C() { cout << "Destructor for C\n"; }
void f() const {
a.f();
B::f();
}
};
class D:public B {
C c;
public:
D(int ii) { B(ii); cout << "Constructor for D\n"; }
~D() { cout << "Destructor for D\n"; }
};
int main() {
D d(47);
}
明白了..謝謝 – talha099 2012-03-11 18:10:24
C也繼承B. – 2012-03-11 18:13:46
這是同樣的解決方案,對不對? – mfontanini 2012-03-11 18:17:49