1
기본 클래스의 존재 여부에 따라 가상 함수를 구현하는 데 도움이되는 관용구가 있습니까? 예를 들어, 나는자매 클래스에 따라 가상 함수를 자동으로 구현
class B {/* some abstract interface. */};
class A
{
public:
virtual B* getB() {return nullptr;}
};
class C : public A, public B
{
public:
B* getB() override {return this;}
/* Implement B's interface here.*/
};
을하고 난 보통 이런 getB
을 구현하려는 - 어떻게 든 모든 잎 클래스에 대해이 작업을 반복하는 것을 피하기 수 있을까? 나는 잠재적으로 B와 같은 몇 가지 인터페이스 클래스를 가지고있다.
나는 그것을 할 수있는 한 방법이 C와 B 모두에서 A로부터 상속 받는다는 것을 안다.하지만 가능하다면 B와 A의 관계를 유지하고 싶다. .
이 방법은 "dynamic_cast"를 사용하기위한 요구 사항입니까? 아니면 하위 클래스의 함수를 재정의하는 것입니까? – dyp
C++ 11 5.2.7 동적 캐스트는 '그렇지 않으면 v는 포인터 여야합니다 to 또는 lvalue를 반환한다. 이것은 다른 경우들 중 하나이다. 다운 소스와 크로스 캐스트의 소스 타입은 다형성이 필요하다. – fizzer
'getB()'자체가 가상 일 필요는 없다 if A는 다른 가상 함수를 가지고 있습니다 – fizzer