指向继承类的指针

时间:2016-05-07 19:20:06

标签: c++ class pointers subclass derived-class

假设我们有一个BaseClass角色和三个SubClasses Good,Bad,Zombie。 还假设我们有两个指针

Character* ptr1,ptr2;

Good Good,Bad或Zombie中的那一点。我想创建这样的代码的一部分:

if ((ptr1 "shows" Good)&&(ptr2 "shows" Bad)) {...} else if ((ptr1 "shows" Good)&&(ptr2 "shows" Zombie)) {...} else if ...

等等。我怎么写这样的陈述?我很难理解虚函数,多态和继承,但也可以用这些来解释。

提前谢谢你。

2 个答案:

答案 0 :(得分:2)

您可以在Character中声明一个虚拟公共方法,该方法返回表示字符类型的枚举类,例如

virtual CharacterType GetCharacterType();
....
if((ptr1->GetCharacterType() == CharacterType::Good) && ptr2->GetCharacterType() == CharacterType::Bad)) {...}

或确认角色类型的虚拟方法。

virtual bool Is(CharacterType characterType);
....
if((ptr1->Is(CharacterType::Good) && ptr2->Is(CharacterType::Bad)) {...}

答案 1 :(得分:0)

您可以通过以下方式使用dynamic_cast

if (dynamic_cast<Good*>(ptr1) && dynamic_cast<Bad*>(ptr2)) {
  ...
} else if (dynamic_cast<Good*>(ptr1) && dynamic_cast<Zombie*>(ptr2)) {
  ...
} else if ...