нестатический — ссылка на нестатический член C ++

у меня есть 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);

Я получаю следующее сообщение об ошибке: «Нестатическая ссылка на элемент должна относиться к определенному объекту». характер не конкретный объект?

1

Решение

Нет, ошибка говорит об объекте Enemy. Для вызова нестатического метода Enemy у вас должен быть объект Enemy.

Enemy en;
en.enemyAttack(character);

Думай о том, когда пишешь

Enemy::enemyAttack(character);

какой враг атакует? Там нет ни одного.

4

Другие решения

enemyAttack является нестатической функцией-членом Enemy, Это означает, что вам нужно немного Enemy объект, чтобы вызвать его. В настоящее время вы пытаетесь вызвать его как статическую функцию. Вам нужно что-то вроде этого:

Enemy monster;
monster.enemyAttack(character);

Обычно, вы бы назвали свою функцию просто attack, поскольку это уже член Enemy, Вы увидите, что это читается лучше:

Enemy monster;
monster.attack(character);
2

По вопросам рекламы [email protected]