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

Character* ptr1,ptr2;

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

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

等等。我该如何写这样的声明?我很难理解虚函数,多态性和继承,但也可以自由地解释这些功能。

先感谢您。

最佳答案

您可以在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)) {...}

关于c++ - 指向继承的类的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37092726/

10-09 04:48