考虑下面的一组类/接口的:多接口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