考慮下面的一組類/接口的:多接口inhertience。從一個鑄造到另一個
class IFish{
public:
virtual void eat() = 0;
}
class IFriendly{
public:
virtual void protect() = 0;
}
class IAggresive{
public:
virtual void attack(Point inDest) = 0;
}
class CDolphin : public IFish, IFriendly{
eat...
protect....
}
class CShark : public IFish, IAggresive{
eat....
attack...
}
現在我有以下類
void CDiver
{
Void shouldRunAway(IFish* fish)
{
//???
}
}
我的問題是,從魚參數可以「shouldRunAway」摘錄無論是IAggresive還是IFreindly(如果它們是這些中的任何一個......)是否有某種類型的演員可以幫忙?
我知道動態轉換是什麼。事情是,據我所知,Dynamic_cast只允許你從基類轉換到子類。在我們的情況下,IFriendly和IAggresive不是IFish的子類,你能澄清你對這個問題的答案嗎?謝謝! – user88637 2009-06-21 10:44:36
看廚房回答: void shouldRunAway(IFish * fish)if(dynamic_cast(fish)!= NULL){ std :: cout <<「Run away!\ n」; }其他{ std :: cout <<「不要逃跑。\ n」; }} –
Drakosha
2009-06-21 15:00:05