我正在尝试将接口对象静态转换为继承该接口的派生类的对象。我收到一个错误
“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() 方法在代码中访问的对象,因此 getInherit()[0] 的类型是 cDerived* 我正在使用表达式执行静态转换:
Repo* pRep= static_cast<cDerived*>(getInherit()[0])->GetRepo();
我不确定是否可以将 static_cast 作为接口对象。有没有其他方法可以让我表演这个演员?