c++ - 无法使功能正常工作

标签 c++

我想要这个函数运行时(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
}

错误: monster.cpp(126) : error C2228: '.getWeapon' 的左边必须有类/结构/union

怪物.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

武器.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

如何修复?

最佳答案

这是因为 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 );

关于c++ - 无法使功能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17586854/

相关文章:

c++ - 如何找到两个迭代器中间的迭代器?

c++ - boost::filesystem::exists 真的应该为没有媒体的可移动媒体设备抛出异常吗?

c++ - 当我真的不关心调用约定时,我是否应该更喜欢 "default"调用约定而不是 __fastcall?

c++ - 我无法创建服务器列表

c++ - 快速选择算法的最小 kth

c++ - 为什么 lambda 在 clang 而不是 gcc 上崩溃?

c++ - 在派生类中处理派生对象集合的最佳方法是什么

c++ - 比较 2 个不同大小的 vector C++

c++ - 迭代器成员行为

c++ - 加载 TTF 时出现段错误 - SDL2