我的dizzyCreature
类继承了creature
类和dizzy
类。它也是creature
类的多态集合的一部分。如果我知道creature
类中的对象是dizzyCreature
,有没有办法从dizzy
类调用函数? 我试图多重继承和多态性
creature[2].dizzyCreature::someFunction();
和
dizzyCreature::creature[2].someFunction();
既不作品。有任何想法吗?
我的dizzyCreature
类继承了creature
类和dizzy
类。它也是creature
类的多态集合的一部分。如果我知道creature
类中的对象是dizzyCreature
,有没有办法从dizzy
类调用函数? 我试图多重继承和多态性
creature[2].dizzyCreature::someFunction();
和
dizzyCreature::creature[2].someFunction();
既不作品。有任何想法吗?
如果我正确理解你有什么是这样的:list<Creature*>
。该列表包含一些dizzyCreature
实例。在这些情况下,你想调用dizzy
类的方法。如果这是目标,那么你可以使用dynamic_cast
来实现这一目标。比方说你有Create* pCreature
那么你可以做:
dizzyCreature* pDizzyCreature = dynamic_cast<dizzyCreature*>(pCreature);
if(pDizzyCreature)
{
pDizzyCreature->someDizzyClassMethod();
}
您需要首先检查类是正确的类型,然后使用dynamic_cast
投它,已经建议。这个解决方案非常优雅,因为动态类型转换本身会执行类型检查 - 即如果您尝试进行无效转换,它将返回NULL。 (有没有必要使用typeid
)
作为一个方面说明,如果我是你,我会尽力做你想做的任何事情如果可能的话没有多重继承。多继承可以打开一整罐蠕虫,除非没有其他选择,否则最好避免。
谢谢,我很难找到好的文档 – Aaron 2012-02-29 05:16:06