ENUM中的值数组?

时间:2011-10-27 20:10:58

标签: c++

我有这段代码

enum type {NOTHING, SOMETHING, SOMETHINGELSE}
type *x;

目前我使用x[765] == SOMETHING,我如何存储其他值,例如

x[765] == SOMETHINGELSE;
x[765].position == 43.5;
x[765].somevar == 12;

我会在我的问题中为我的可怜措辞道歉,我刚开始使用C ++,我知道我想要什么,我只是不确定如何提问。

感谢。

5 个答案:

答案 0 :(得分:2)

看起来你正在寻找一种结构“知识”的方法;这是通过结构或类完成的:

#include <vector>

struct Info {
   enum thingness { nothing, something };

   // 'member' variables
   thingness howMuch;
   int a_counter;
   float position;
};

int main(){
  Info object;
  object.howMuch=Info::something;
  object.a_counter=1;
  object.position=5.4;

您可以将这些类型的对象分组到容器中 - 通常是std::vector

  // a container of InterestingValues
  std::vector<Info> container(300);

  container[299].howMuch=Info::nothing;
  container[299].a_counter=4;
  container[299].position = 3.3;

  // or assign rightaway:
  container[2] = object;
}

答案 1 :(得分:1)

你必须让自己变得更复杂:

struct type
{
    enum flag_type
    {
        NOTHING, SOMETHING, SOMETHINGELSE
    } flag;
    double position;
    int somevar;
};

以后有一个新的type.

数组

答案 2 :(得分:1)

给自己一本好书来学习。此处提供了一系列好书:The Definitive C++ Book Guide and List

在C ++中,您询问如何声明结构数组。试试这个:

struct type {
    double position;
    int somevar;
};

type *x;
x[765].position = 43.5;
x[765].somevar = 12;

答案 3 :(得分:0)

枚举是一个基本上用于int的可替换标签。您需要定义结构或类。

struct type
{
   float position ;

};

type var;
var.position = 3.4;

答案 4 :(得分:0)

您的类型枚举需要与其他字段一起成为类的成员。例如,

class MyType
{
public:
    type t;
    double position;
    int somevar;
};

使用MyType个实例

数组
MyType *x;

然后你就可以做你想要做的事情

x[765].t = SOMETHINGELSE;

分配给枚举。