2013-07-11 33 views
0

我要當函數運行(Monster.cpp)無法獲取功能工作

void Monster::addWeapon(typeOfWeapon selection){ 
    cout<<myWeaponSelection<<endl; //out puts correctly. 
    myWeaponSelection[0].getWeapon(selection); //gives error  
} 

,它將運行此功能(weapon.cpp)

void getWeapon(typeOfWeapon myWeaponSelection) 
{ 
    cout<<"you got weapon!"<<myWeaponSelection<<endl 
} 

錯誤: 怪物的.cpp(126):錯誤C2228:左 '.getWeapon' 必須具有類/結構/聯合

Monster.h

#ifndef MONSTER 
#define MONSTER 
#include <string> 
using namespace std; 
enum typeOfMonster {dog,wolf,bear,goat,human,god,snail,elephant,wayven,bird,worm,kid,boy,ent,superman}; 

class Monster 
{ 
    public: 
    Monster(); 
    ~Monster(){} 

    typeOfWeapon myWeaponSelection[2]; 
    void addWeapon(typeOfWeapon weaponName); 
}; 
#endif 

Weapon.h

#ifndef WEAPON 
#define WEAPON 
#include <string> 
using namespace std; 
enum typeOfWeapon {bark,howel,eat,ram,shoot,smite,slime,stomp,peck,swarm,dig,bow,slingshot,kick,beem, //wp 1 
        bite,charm,claw,naw,burn,lighingstrike,heal,smack,lazers,poop,posion,superkick,punch,tackel,freeze};//wp 2 
class Weapon 
{ 
    public: 
    Weapon(); 
    ~Weapon(){} 

    typeOfWeapon myWeaponSelection; 
    void getWeapon(typeOfWeapon myWeaponSelection,int whichWeapon); 
}; 
#endif 

如何解決?

+0

編譯器會阻止您創建的怪物:) –

+0

這僅僅是一個爛攤子......我想你應該花一些時間找一本關於C++的介紹書,閱讀有關課程的章節。看來你並不真正知道你在這裏做什麼。 –

+1

優秀的觀察,我正在學習和順便說一句,你的消息是一團糟...... –

回答

3

這是因爲typeOfWeapon是一個枚舉。它沒有成員函數。

如果你想一個新的武器添加到myWeaponSelection,你可以這樣做:

void Monster::addWeapon(typeOfWeapon selection) 
{ 
    cout << myWeaponSelection << endl; 
    myWeaponSelection[0] = selection; 
    //     ^^^^^^^^^^^^^ 
} 

因爲myWeaponSelection[0]selection是同一類型的。

和你getWeapon應該在Weapon範圍:

void Weapon::getWeapon(typeOfWeapon myWeaponSelection); 

void getWeapon(typeOfWeapon myWeaponSelection); 
+0

確定範圍部分的工作,對於武器選擇我必須重寫功能的錯誤,因爲我想當選擇是添加,它將數據添加到該武器,如力量,射程等..但後來可能還有一個新問題。 –

+0

我認爲你應該重寫怪物和武器之間的關係。因爲我認爲你想要的是在怪物身上存放武器的權利? –

+0

是的,試着重寫它 –

3

您的Weapon.cpp非成員函數:

void getWeapon(typeOfWeapon myWeaponSelection) 

你需要把在Weapon範圍:

void Weapon::getWeapon(typeOfWeapon myWeaponSelection) 
// ^^^^^^^^ 
+0

這就是它,我給你回答因爲你在哪裏第一..謝謝 –

+2

@GlenMorse其他答案更完整。爲了未來的訪問者,最好選擇那個。我懶得通讀所有的代碼,並停在第一個錯誤:-) – juanchopanza