尝试读取枚举状态时出现C ++枚举错误

时间:2015-08-21 18:15:34

标签: c++ class enums

我正在使用C ++制作游戏,但我遇到了枚举问题。我正在定义一个枚举:

enum class CharacterClass {
    warrior = 0,
    scout = 1,
    mage = 2
};

我在Player类中使用它:

class Player
{
    public:
        Player();
        ~Player();

        CharacterClass PlayerClass;

    private:
};

当我尝试设置枚举状态时:

Player player();
player.PlayerClass = CharacterClass::mage;

编译器发现此错误:

request for member 'PlayerClass' in 'player', which is of non-class type 'Player()'

2 个答案:

答案 0 :(得分:3)

最多vexing parseplayer被理解为函数声明。所以player.PlayerClass会触发此错误。

尝试:

Player player{};  // prefer uniform brace-initialisation 

这篇关于variable initialization的博客文章很好地解释了每种表格的优缺点。

答案 1 :(得分:2)

播放器播放器()不会创建播放器类型的变量!相反,它声明了一个函数。