2012-11-13 102 views
1

我有一個Character .h/.cpp,一個Enemy .h/.cppDriverC++非靜態成員引用

如果我通過字符到一個函數從Enemy,我有

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

工作正常。

但是,早在我的司機,如果我這樣做:

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

我收到以下錯誤信息:「一個非靜態成員引用必須是相對於特定對象」是字符不是一個特定的對象?

回答

4

不,錯誤是在談論一個敵人的對象。要調用一個非靜態的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);