저는 현재 C++ 프로젝트에서 작업 중이며 현재 디자인 문제에 직면 해 있습니다. 누군가 제안 할 수 있으면 감사하겠습니다. 기본적으로 기본 클래스는 Base이고, 하위 클래스는 Derived입니다. Class Derived는 Base 클래스가 할 수없는 것을 할 수 있습니다.dynamic_cast에 알맞은 대안이 있습니까
class Base
{
public:
virtual bool IsCapableOfDoingA() {return false;}
}
class Derived: public Base
{
public:
bool IsCapableOfDoingA() {return true;}
void DoA();
}
다른 클래스에서는 Base 클래스 유형의 포인터가 있습니다.
void functionA(Base *pBase)
{
if (pBase && pBase->IsCapableOfDoingA())
{
Derived *pDerived = static_cast<Derived*>(pBase);
pDerived->DoA();
}
}
처음에는 동적 다형성을 필요로하는'Base'와'Derived'로 무엇을하고 있습니까? 컨텍스트가 없으면이 질문에 대답 할 방법이 없습니다. – ildjarn
질문에'dynamic_cast'에 대한 대안을 물어 보았습니다.하지만 그게 잘못된 것입니까? – hvd
더 많은 문맥없이 대답하는 것은 불가능합니다. 그러나 예상했던 것처럼 멤버 함수가 무엇인지 쿼리해야하는 상황에 있다면 설계를 거의 재검토해야합니다. –