0
我想寫一個相對較深的類層次,我的編譯器一直拋出「沒有匹配函數調用[默認構造函數爲低音類]」。這裏的情景:C++初始化列表中的第二個鏤空類
Class A {
A(int);//note, no default constructor
}
Class B : public A {
B(int i, int j) : A(i), someMemberVariable(j) {}
int someMemberVariable;
}
Class C : public B {
C(int k, int l) : B(k, l) {}
}
和編譯器會引發錯誤上說:「對於調用A :: A()沒有匹配功能」行了C類的構造函數,並告訴我,使用A ::一(INT)。
我知道我沒有類A的默認構造函數,編譯器在我嘗試子類的子類時感到困惑。但是,我不明白的是爲什麼。我已經使用了一個初始化列表來避免這一點。如果我只使用2級深層類,那麼它工作得很好,但是第三類給了我錯誤。我在這裏做錯了什麼?
你應該準備一個['SSCCE'](http://sscce.org)。很難相信上面的代碼可以代表你的問題,因爲你沒有從任何實際的代碼中複製 - 粘貼這些代碼('Class'不是關鍵字,缺少分號等等) – 2013-05-09 17:46:51
構造函數應該是公開的;並修復後的類,一切編譯VS2008 – Max 2013-05-09 17:49:30
看起來像它在這裏工作正常:https://ideone.com/CxoszY。 「我的編譯器不斷拋出」 - 也許你想分享你正在使用的編譯器? – Bill 2013-05-09 17:54:06