gpt4 book ai didi

c++ - 不同类中的枚举不兼容?

转载 作者:行者123 更新时间:2023-11-30 04:08:27 25 4
gpt4 key购买 nike

所以我正在制作一个游戏,我有一个 Player 类,它有一个枚举,表示玩家当前面对的方向,向上、向左等。

Player.h
#include "Fireball.h"
class Player
{
// Some stuff
Fireball fireballs;
void update();

private:
enum direction {up, left, down, right, upLeft, upRight, downLeft, downRight} playerDir;
};

我还有一个 Spell 类,我将从中派生出特定的法术,例如 Fireball。 Spell 类有一个与 Player 类相同的枚举,因为我希望能够在更新法术实例时将玩家的当前方向作为参数传递,并在其中移动法术方向。

Spell.h
class Spell
{
// Some stuff

protected:
enum direction {up, left, down, right, upLeft, upRight, downLeft, downRight};
};

.

Fireball.h
#include "Spell.h"
class Fireball : public Spell
{
public:
void updateFireballs(direction fireballDir);
};

.

Player.cpp
#include "Player.h"

void Player::update()
{
fireballs.updateFireballs(playerDir);
}

当我尝试将 playerDir 作为参数传递给 updateFireballs 函数时,它提示无法将“Player::direction”转换为“Spell::direction”。

如何将来自不同类的枚举作为不同类中函数的参数传递?

最佳答案

每个枚举都是它自己的类型。当您在不同的类中定义两个枚举时,您定义了两种类型。他们可能有相同的成员名称,但他们没有关系。

当你需要一个通用的枚举时,定义一个。如果你发现这个枚举有名称冲突,你应该为它定义一种“容器”。这可以是您的类 PlayerSpell 的命名空间或基类。

关于c++ - 不同类中的枚举不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com