2017-10-07 21 views
0

내 질문과 관련된 답변을 찾을 수 없었습니다. 내가 본 것을 "이상한"사례라고 생각합니다.오류 : 'class'유형이 'class'의 직접적인 기반이 아닙니다.

그래서 Child1을 상속하는 클래스 Child2Parent에서 상속됩니다. Parent에는 생성자가 없습니다.

Child1.h :

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

:

class Child1 : virtual public Parent 

이 내가 Child2의 생성자에서 호출 할 수있는 기능입니다 여기

내가 상속하는 방법입니다 어린이 2

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

foo()Child2에 없으므로 올바르게 이해하면 모호하지 않아야합니다.

그러나,이 오류가 발생할 수 :

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 
{....}