2013-07-11 4 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