1

私は 、Character .h/.cppEnemy .h/.cppを持っていますDriver

から関数に文字を渡すとEnemy

ENEMY.CPP: void Enemy::enemyAttack(Character *character)
{ //whatever needs to be done }

これは正常に動作します。

しかし、これを行うと、ドライバーに戻ります。

Character *character = new Character();
Enemy::enemyAttack(character);

次のエラー メッセージが表示されます。文字は特定のオブジェクトではありませんか?

4

2 に答える 2

4

いいえ、エラーは Enemy オブジェクトに関するものです。非静的な Enemy メソッドを呼び出すには、Enemy オブジェクトが必要です。

Enemy en;
en.enemyAttack(character);

あなたが書くとき、考えてください

Enemy::enemyAttack(character);

攻撃してくる敵は?1つもありません。

于 2012-11-13T19:00:43.793 に答える
2

enemyAttackの非静的メンバー関数ですEnemy。つまり、それEnemyを呼び出すオブジェクトが必要です。現在、静的関数として呼び出そうとしています。代わりに次のようなものが必要です。

Enemy monster;
monster.enemyAttack(character);

attack通常、関数は のメンバーであるため、単純に名前を付けますEnemy。読みやすくなっていることがわかります。

Enemy monster;
monster.attack(character);
于 2012-11-13T19:00:06.480 に答える