我在当地一所大学的夜间课程中获得了 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(使用前将#替换为@)