我想將一個接口對象static_cast轉換爲繼承該接口的派生類的對象。我得到一個錯誤static_cast派生類的接口
'的static_cast:不能從轉換「IInherit *」到「反應而得*」
派生類和接口有以下幾種格式。
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;
};
我有通過getInherit()方法中的代碼訪問的vector<IInherit*>
對象使得getInherit()的類型[0]反應而得* 我使用的表達進行靜態澆鑄:
Repo* pRep= static_cast<cDerived*>(getInherit()[0])->GetRepo();
我不確定是否有可能將static_cast作爲接口對象。有沒有其他的方法可以演出這個角色?
你使用什麼編譯器?這[適用於我](http://ideone.com/ESohQ3)。 – 2013-03-14 00:00:47
你能提供一個完整的例子來顯示錯誤和完整的錯誤信息嗎? – JoergB 2013-03-14 00:01:17
「IInherit」和「cDerived」的**定義**在發生錯誤的地方都可見? – 2013-03-14 00:02:40