我有一个Character .h/.cpp
,一个Enemy .h/.cpp
和一个Driver
如果我将角色传递给Enemy
的函数,我有
ENEMY.CPP: void Enemy::enemyAttack(Character *character)
{ //whatever needs to be done }
工作正常。
但回到我的司机,如果我这样做:
Character *character = new Character();
Enemy::enemyAttack(character);
我收到以下错误消息:“非静态成员引用必须与特定对象相关。”字符不是特定的对象吗?
答案 0 :(得分:4)
不,错误在于谈论敌人的对象。要调用非静态Enemy方法,您必须拥有Enemy对象。
Enemy en;
en.enemyAttack(character);
当你写作时想想
Enemy::enemyAttack(character);
攻击哪个敌人?没有一个。
答案 1 :(得分:2)
enemyAttack
是Enemy
的非静态成员函数。这意味着您需要一些Enemy
对象来调用它。目前,您正试图将其称为静态函数。你需要这样的东西:
Enemy monster;
monster.enemyAttack(character);
通常,您只需将attack
命名为函数,因为它已经是Enemy
的成员。你会发现它看起来更好:
Enemy monster;
monster.attack(character);