私は現在、C++プロジェクトに取り組んでおり、現在設計上の問題に直面しています。誰かが私に提案をくれれば感謝しています。基本的には、ベースクラスBaseと、以下のようにDerivedサブクラスを持っています。クラス派生クラスは、基本クラスが行うことができないことを行うことができます。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
これは、もう少しの文脈がなければ答えることは不可能です。しかし、あなたが推測したように、どのメンバ関数が存在するかを照会する必要がある場合は、設計を再考する必要があります。 –