如何在代码的另一部分中使用类中的枚举值?

2023-12-22

我在当地一所大学的夜间课程中获得了 C# 背景,现在我已经开始了 C++ 之路。适应语法很痛苦。在编码技术方面我也还很陌生。

From my WinMain函数,我希望能够访问使用我在另一个类中声明的枚举的变量。

(inside core.h)
class Core
{
    public:
    enum GAME_MODE
    {
        INIT,
        MENUS,
        GAMEPLAY
    };
    GAME_MODE gameMode;

    Core();
    ~Core();
    ...OtherFunctions();
};

(inside main.cpp)
Core core;
int WINAPI WinMain(...)
{
    ... startup code here...

    core.gameMode = Core.GAME_MODE.INIT;

    ...etc...
}

基本上我想将该 gameMode 设置为枚举值Init或者我的类似的东西WinMain功能。我也希望能够从其他领域阅读它。

我收到错误...

expected primary-expression before '.' token

如果我尝试使用core.gameMode = Core::GAME_MODE.INIT;,然后我得到同样的错误。

我并不担心最佳实践,因为我只是想了解在文件之间传递 C++ 变量的基本理解。一旦我习惯了语法的灵活性,我将确保变量受到保护并整齐地隐藏起来。

如果我没记错的话,C# 允许我使用其他类中的枚举,而我所要做的就是类似Core.ENUMNAME.ENUMVALUE.

我希望我想要做的事情很清楚:\ 因为我不知道很多正确的术语是什么。


Use

core.gameMode = Core::INIT;

枚举的各个值的范围不在该枚举内,而是与枚举本身处于同一级别。这是大多数其他语言(包括 C#)所做的不同的事情,C++0x 将允许这两种变体,因此,

core.gameMode = Core::GAME_MODE::INIT;

也将合法。

此外,C++0x 中将添加的强类型枚举(enum class) 将放置枚举值only在枚举范围内(即如 C# 中那样);这解决了您在评论中指出的问题,即对于“正常”枚举,枚举值的标识符在同一范围内定义的所有枚举中必须是唯一的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在代码的另一部分中使用类中的枚举值? 的相关文章

随机推荐