gpt4 book ai didi

c++ - 如何在代码的另一部分使用类中的 Enum 值?

转载 作者:IT老高 更新时间:2023-10-28 12:34:40 25 4
gpt4 key购买 nike

我在本地大学的夜间类(class)中获得了 C# 背景,因此我开始使用 C++。习惯语法很痛苦。在编码技术方面,我也很年轻。

从我的 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++ 中的文件之间传递变量有基本的了解。一旦我习惯了语法的灵 active ,我将确保变量受到保护并被整齐地隐藏起来。

如果我没记错的话,C# 允许我使用来自其他类的 Enum,而我所要做的就是像 Core.ENUMNAME.ENUMVALUE 这样的东西。

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

最佳答案

使用

core.gameMode = Core::INIT;

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

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

也是合法的。

另外,将在 C++0x 中添加的强类型枚举(enum class)会将枚举值only放在枚举的范围内(即如在 C# 中);这解决了您在评论中提到的问题,即对于“普通”枚举,枚举值的标识符需要在同一范围内定义的所有枚举中是唯一的。

关于c++ - 如何在代码的另一部分使用类中的 Enum 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4506750/

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