처음에는 사과하는 질문이지만이 글에서는 초보자 인 경우 사과드립니다. 내 질문은 내가 믿는 다이아몬드 문제의 변형입니다.다중 상속 클래스의 가상 함수
나는 다음과 같은 수업을 상상해 :
class A{ public: virtual foo();};
class B{ public: foo();};
class C{ public: foo();};
class D: public A, public B, public C{
public: foo();
};
내 질문은이 클래스 D
에서 foo()
를 호출하고 가상 함수가 A
, B
, C
및 D
를 통해 실행하는 것이 가능하다. 나는 이것을 시도했지만 d::foo()
함수는 다른 모든 foo()
함수보다 우선합니다.
1 : 2 상속 체계를 만든 경우에만 가능합니까?
class A{ public: virtual foo();};
class B: public A { public: foo();};
class C: public B { public: foo();};
class D: public C { public: foo();};
물어 이유는 내가 가상 함수를 실행의 가능성을 각 시간 A
또는 B
또는 C
를 구성 할 필요없이 다른 클래스에 A
, B
및 C
을 구성하지만, 유지할 수 있도록하고 싶습니다 때문이다 각 경우에 전화 할 필요없이 A::foo()
, B::foo()
, C::foo()
.
"제 질문은 클래스 D에서 foo()를 호출하고 A, B, C 및 D에서 가상 함수를 실행할 수 있다는 것입니다."무엇을 의미합니까? – Brian
D.foo()를 호출하고 A.foo(), B.foo() 및 C.foo()를 동시에 호출하도록 요청합니까? – bstar55
예 bstar55. 나는 동시에 그들 모두에게 전화하고 싶다. 따라서 D.foo()를 호출하면 A.foo(), B.foo(), C.foo() 및 D.foo()가 호출됩니다. 시도하고 덜 혼란스럽게 질문을 변경했습니다. – hadroque