у меня есть 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);
Я получаю следующее сообщение об ошибке: «Нестатическая ссылка на элемент должна относиться к определенному объекту». характер не конкретный объект?
Нет, ошибка говорит об объекте Enemy. Для вызова нестатического метода Enemy у вас должен быть объект Enemy.
Enemy en;
en.enemyAttack(character);
Думай о том, когда пишешь
Enemy::enemyAttack(character);
какой враг атакует? Там нет ни одного.
enemyAttack
является нестатической функцией-членом Enemy
, Это означает, что вам нужно немного Enemy
объект, чтобы вызвать его. В настоящее время вы пытаетесь вызвать его как статическую функцию. Вам нужно что-то вроде этого:
Enemy monster;
monster.enemyAttack(character);
Обычно, вы бы назвали свою функцию просто attack
, поскольку это уже член Enemy
, Вы увидите, что это читается лучше:
Enemy monster;
monster.attack(character);