는 :추상 기본 클래스 퍼즐
class MyData
{
int foo;
};
class AbstraktA
{
public:
virtual void A() = 0;
};
class AbstraktB : public AbstraktA
{
public:
virtual void B() = 0;
};
template<class T>
class ImplA : public AbstraktA
{
public:
void A(){ cout << "ImplA A()"; }
};
class ImplB : public ImplA<MyData>, public AbstraktB
{
public:
void B(){ cout << "ImplB B()"; }
};
void TestAbstrakt()
{
AbstraktB *b = (AbstraktB *) new ImplB;
b->A();
b->B();
};
위의 코드의 문제는 컴파일러가 AbstraktA :: A() 정의되지 불평 것입니다.
인터페이스 A는 여러 개체에서 공유됩니다. 그러나 A의 구현은 템플릿 인수에 따라 달라집니다. 인터페이스 B는 외부 세계에서 볼 수 있으며 abstrakt가되어야합니다.
내가이하고 싶은 이유는 내가이 같은 오브젝트 C를 정의 할 수 있습니다 것입니다 : 이 템플릿 A.에 대해 다른 데이터 유형을 사용하여 C의 구현을 정의 추상의 A. 에서 상속 인터페이스 C를 정의
나는 분명히 희망한다. 이 작업을 수행 할 수있는 방법이 있습니까? 아니면 디자인을 재고해야합니까?
나는 "멍청 할 수도 있지만"추상적 인 "철자가"abstrakt "일 수 있습니다. 그게 의도적 인거야? –
ㅎ, 전혀 이유가 없습니다. 제 모국어로 된 결과 : –
가능한 복제본 : http://stackoverflow.com/questions/254673/multiple-inheritance-from-two-derived-classes – Talvalin