インターフェイスオブジェクトを、そのインターフェイスを継承する派生クラスのオブジェクトにstatic_castしようとしています。エラーが発生します
'static_cast':'IInherit*'から'cDerived*'に変換できません
派生クラスとインターフェースは次の形式です。
class cDerived: public IInherit
{
Repo* p_Repos;
public:
cDerived(Repo* pRepos)
{
p_Repos = pRepos;
}
Repo* GetRepo()
{
return p_Repos;
}
void doAction(ITok*& pTc)
{
///some logic
}
}
class IInherit
{
public:
virtual ~IInherit() {}
virtual void doAction(ITok*& pTc)=0;
};
vector<IInherit*>
getInherit()[0]のタイプがcDerived *になるように、getInherit()メソッドを介してコードでアクセスできるオブジェクトがあります。次の式を使用して静的キャストを実行しています。
Repo* pRep= static_cast<cDerived*>(getInherit()[0])->GetRepo();
static_castをインターフェースオブジェクトとして使用できるかどうかはわかりません。このキャストを実行できる他の方法はありますか?