2013-05-18 2 views
0

클래스 A를 상속받지 않고 클래스 D에서 클래스 A의 함수를 어떻게 사용합니까 (나쁜 습관이라고 알고 있지만 상속을 전혀 변경할 수 없음). D에서 C와 B의 상속을 제거 하시겠습니까? 나는 회원 모호한 오류 요청 주위에 방법을 찾을 수 없습니다. 그 상관없이 지금까지 내 예를 느슨하게 예는 여기에있는 "모호한 기본 클래스 (만 C++) '을 기반으로C++에서 모호한 멤버 요청을 해결하는 방법 이해하기

class A 
{ 
public: 
    void DoEverything(int){ } 
}; 

class B : public A 
{ 
public: 
    ... 
}; 

class C : public A 
{ 
public: 
    ... 
}; 

class D : public C : public B 
{ 
public: 
    ... 
}; 

int main() 
{ 
    D dMan; 
    int i = 2; 

    dMan.DoEverything(i); 
} 

제거하는 방법에 대한 이해의 (잘못) 없었다 : http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/topic/com.ibm.xlcpp8a.doc/language/ref/cplr138.htm#cplr138하지만 나에게 도움이되지 않았습니다 문제를 이해하십시오. 모든

+1

다이아몬드 상속 문제가 있습니다. 이 게시물을 확인해보십시오 : http://stackoverflow.com/questions/379053/diamond-inheritance-c –

답변

3

첫째, 그것이 작동되도록하기 만 할 다음과 같이 변경

클래스 B : 가상 공용 A 주택 ...

클래스 C : 가상 공공 다중 상속에서

이 문제 다이아몬드 문제라고합니다. 더 알고 싶다면이 링크를 클릭하십시오. http://www.cprogramming.com/tutorial/virtual_inheritance.html

+0

... 글쎄, 생각보다 훨씬 쉬워졌습니다. 고마워. – Switchkick