흥미로운 다중 상속 문제를 파악하려고합니다.C++ 다중 상속 - 왜 작동하지 않습니까?
class A
{
public:
virtual int foo() = 0;
virtual int bar() = 0;
};
는 그런 부분이 인터페이스를 완료하는 추상 클래스가있다 :
조부모는 다양한 방법과 인터페이스 클래스이다.
class B : public A
{
public:
int foo() { return 0;}
};
class C : public A
{
public:
int bar() { return 1;}
};
내가 부모 모두로부터 상속을 사용하려는 클래스는 방법을 사용하여 지침을 통해 어디서 무엇인지를 지정한다 : 나는 DI가 시도에 대한 오류를 얻을 인스턴스화하려고
class D : public B, public C
{
public:
using B::foo;
using C::bar;
};
abstract 클래스를 인스턴스화합니다.
int main()
{
D d; //<-- Error cannot instantiate abstract class.
int test = d.foo();
int test2 = d.bar();
return 0;
}
누군가가 문제를 이해하고 부분 구현을 최대한 활용하는 데 도움을 줄 수 있습니까?
다이아몬드 패턴에서는 가상 상속을 사용해야합니다. 그러나 나는 그것이 당신의 문제를 스스로 해결할 것이라고는 생각하지 않습니다. – David