C ++非静态成员引用

时间:2012-11-13 18:58:24

标签: c++ non-static

我有一个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);

我收到以下错误消息:“非静态成员引用必须与特定对象相关。”字符不是特定的对象吗?

2 个答案:

答案 0 :(得分:4)

不,错误在于谈论敌人的对象。要调用非静态Enemy方法,您必须拥有Enemy对象。

Enemy en;
en.enemyAttack(character);

当你写作时想想

Enemy::enemyAttack(character);

攻击哪个敌人?没有一个。

答案 1 :(得分:2)

enemyAttackEnemy的非静态成员函数。这意味着您需要一些Enemy对象来调用它。目前,您正试图将其称为静态函数。你需要这样的东西:

Enemy monster;
monster.enemyAttack(character);

通常,您只需将attack命名为函数,因为它已经是Enemy的成员。你会发现它看起来更好:

Enemy monster;
monster.attack(character);