存储数组中另一个命名空间的枚举值

时间:2015-11-21 22:11:03

标签: c++

我想将枚举变量中的值存储在数组中的另一个命名空间中。

因此假设枚举声明如下

namespace something
{
    enum IWANT
    {
        FOO = 0,
        BAR,
        BLARGH,
        MEH,
        SIZE
    };
} // namespace SOMETHING

我可以访问此枚举使用

something::FOO

是否可以从数组中的某些内容存储我想要的某些变量?例如

<varType> onlyWhatIwant[3] = {something::FOO, something::BAR, something::SIZE}

这样当变量使用如下onlyWhatIwant[1] points to the something::BAR

我不知道这是否可能,但我想在寻找另一条路线之前会问。

2 个答案:

答案 0 :(得分:1)

枚举基本上是一种定义整数常量的方法;它们没有关联的地址,因此您可以使用传统意义上的指针。你想做什么在某种程度上是可能的(查看下面的完整例子);但是,数组元素不会指向别的东西。它们的值将等于指定的常量(在我的示例中为foo :: first和foo :: second)。

namespace foo {
    enum X {first, second};
};

int main() {
    foo::X t[3] = {foo::first, foo::first, foo::second};
    return 0;
}

答案 1 :(得分:0)

这样的枚举

namespace something{
  enum myEnum{
    Val0 = 0,
    Val1 = 1,
    Val2 = 2,
    Val3 = 3,
  //...
  //Valn = n
  };
}

你也可以使用这样的东西作为值的别名

enum onlywhatiwant{
  Val1 = something::Val1,
  Val3 = something::Val3
  // etc
};