【问题标题】:using ENUM in Visual Studio C++在 Visual Studio C++ 中使用 ENUM
【发布时间】:2013-11-22 15:14:18
【问题描述】:

我尝试用 C++ 编写一些简单的代码,但是当我调试它时,某些枚举类型的声明变量没有得到赋值。我参考的代码如下:

namespace GEORGE { 
    //...
    public enum FUNCTIONITEM { VARIABLE, FUNCTION, NUMBER };
    //...
}

然后,在另一个文件中,我有以下内容:

//... 
using namespace GEORGE;

private System::Void AFunction(...)
{
    //...
    FUNCTIONITEM anItem;
    //...
    if (condition)
       anItem = VARIABLE;
    else
       amitem = NUMBER;
    //...
}

当我调试上面的时候,当条件为真时,它会去处理第一个anItem = VARIABLE;

但它没有为其分配任何值(调试器中 anItem 的 Watch 显示:<undefined value>,在处理完该行之后。当我将 anItem 声明为 int 时,它按我的预期分配值 0。我认为虽然将 anItem 声明为 FUNCTIONITEM 应该没问题,所以我很惊讶。有什么想法吗?

【问题讨论】:

  • 那么,问题是什么?
  • 你希望它做什么?当条件为真时,anItem 应该等于 VARIABLE
  • 如果您在此处复制并粘贴此代码,那么您在 else 中拼错了变量。
  • 请展示一个完整的程序。一个SSCCE。也许编译器会删除该变量,因为您从未在其他地方引用它。但我们不知道你真正的程序是什么样的。 SSCCE 请。
  • @user David 没有请求“程序”。他要求提供SSCCE,这是一个暴露您遇到的问题的最小 测试用例。获得帮助需要付出努力。

标签: c++ enums namespaces c++-cli visual-studio-2013


【解决方案1】:

代替

if (condition)
   anItem = VARIABLE;
else
   amitem = NUMBER;

使用

if (condition)
   anItem = FUNCTIONITEM::VARIABLE;
else
   amitem = FUNCTIONITEM::NUMBER;

【讨论】:

  • 嗨弗拉德,感谢您的建议。我也尝试过(在 VARIABLE 或 NUMBER 之前添加 FUNCTIONITEM:: )但没有进一步成功:( .
  • 这是一个无范围的枚举,所以这只会阻止它编译。
猜你喜欢
  • 1970-01-01
  • 2010-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 2016-05-07
  • 2012-08-21
  • 1970-01-01
相关资源
最近更新 更多