【问题标题】:C++ nonstatic member referenceC++ 非静态成员引用
【发布时间】:2012-11-13 18:58:23
【问题描述】:

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

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

【问题讨论】:

    标签: c++ non-static


    【解决方案1】:

    不,错误是在谈论 Enemy 对象。要调用非静态 Enemy 方法,您必须有一个 Enemy 对象。

    Enemy en;
    en.enemyAttack(character);
    

    想想,当你写的时候

    Enemy::enemyAttack(character);
    

    攻击的是哪个敌人?一个都没有。

    【讨论】:

      【解决方案2】:

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

      Enemy monster;
      monster.enemyAttack(character);
      

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

      Enemy monster;
      monster.attack(character);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-24
        • 1970-01-01
        • 2016-05-20
        • 2021-12-03
        • 1970-01-01
        • 2014-11-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多