다음 코드를 고려 기본 클래스를 통해 함수를 정의합니다. 이 상황을 어떻게 해결할 수 있습니까? 이 문제는 다이아몬드 상속과 비슷하지만 해결책을 찾지 못했습니다.파생 클래스는
편집 : 감사합니다,이 작업 예입니다
#include "stdio.h"
struct A
{
virtual void f() = 0;
};
struct B
{
void f()
{
printf("B::f\n");
}
};
struct C : public A, public B
{
void f()
{
printf("C::f\n");
B::f();
}
};
int main()
{
A* a = new C();
B* b = new C();
C* c = new C();
printf("Calling from A\n");
a->f();
printf("Calling from B\n");
b->f();
printf("Calling from C\n");
c->f();
}
출력 :
Calling from A
C::f
B::f
Calling from B
B::f
Calling from C
C::f
B::f
그냥 당신의 의도를 이해하기 : 당신은'A'가 인터페이스를 정의하려면,'B'가 구현와'C'가 함께 퍼팅을 정의? 나는'B : A'에 비해이 이점을 보지 못합니다. 왜냐하면'B'를 구현할 때 구현중인 인터페이스를 이미 알고 있기 때문입니다. 맞습니까? – leemes
'A'에서'B'를 파생시키지 않습니다. 왜냐하면 이것은 훨씬 더 큰 프로젝트에서 만난 문제의 단지 고립 된 예일뿐입니다. –