나는 다음과 같은 코드가 있습니다다중 상속 분쟁
class Interface
{
virtual void method()=0;
};
class Base : public Interface
{
virtual void method()
{
//implementation here
}
};
class Parent: public Interface
{
};
class Child : public Base, public Parent
{
};
int main()
{
Child c;//ERROR: cannot instantiate abstract class
}
지금 내가 왜 이런 일을 알고 난 부모를 상속하고있어 이후 나는 다시 방법을 구현해야합니다. 하지만 이미 Base 클래스에 정의되어 있으며 모든 하위 클래스에 대해 해당 정의를 재정의하고 싶지 않습니다. 나는 C++에서 이것을 없애기위한 표준 방법이 있다고 생각한다. (인터페이스의 어떤 복사본을 사용해야하는지 컴파일러에게 알려준다.) 나는 그것이 무엇인지 기억하지 못한다.
가상 상속이 없으면 여기에 'Child'클래스에 두 개의 별개의 가상'method()'함수가 생기지 않습니까? – NPE
나는 그렇게 믿고있다. – atoMerz
왜 'Base'와 'Parent'둘 다에서 상속을 원합니까? –