2017-10-07 65 views
0

我一直無法找到與我的問題有關的答案。就我看到的情況而言,這有點「奇怪」。錯誤:輸入'class'不是'class'的直接基礎

所以我有一個類Child2繼承自Child1,繼而從Parent繼承。 Parent沒有構造函數。

這裏是我如何繼承:

Child1.h:

class Child1 : virtual public Parent 

這是我想從Child2的構造函數中調用該函數:

void Child1::foo(unsigned int i) 
{ 
    // ... 
} 

Child2

Child2::Child2() : Child1() 
{ 
    foo(10); 
} 

Child2中沒有foo()的功能,所以如果我理解正確,不應該有任何含糊之處。

不過,我會遇到這樣的錯誤:

Child2.cpp: In constructor ‘Child2::Child2()’: Child2.cpp:12:28: error: type ‘Child1’ is not a direct base of ‘Child2’ Child2::Child2() : Child1()

Child1的構造是工作,所以我離開了出來。在這種情況下,我不確定它是否重要。

+2

在這種情況下,您可能忽略了很多重要的內容。你需要提供[mcve]。畢竟,如果你不知道問題出在哪裏,你怎麼知道你遺漏的東西並不是其他人需要幫助你的東西? – Peter

+0

請分享'foo'函數的聲明。 – MKR

回答

0

檢查您的Child2類是否被聲明爲Child1的子級。例如:

class Child2 : Child1 
{....}