作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在制作一个游戏,我有一个 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”。
如何将来自不同类的枚举作为不同类中函数的参数传递?
最佳答案
每个枚举都是它自己的类型。当您在不同的类中定义两个枚举时,您定义了两种类型。他们可能有相同的成员名称,但他们没有关系。
当你需要一个通用的枚举时,定义一个。如果你发现这个枚举有名称冲突,你应该为它定义一种“容器”。这可以是您的类 Player
和 Spell
的命名空间或基类。
关于c++ - 不同类中的枚举不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21835692/
我是一名优秀的程序员,十分优秀!