2011-10-27 29 views
0

我有這樣的代碼ENUM中的值的數組?

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

目前我使用x[765] == SOMETHING例如,如何將存儲例如

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

我會爲我的我的問題IM中差措辭道歉剛開始其他值在C++中,我知道我想要什麼,我只是不確定如何問它。

謝謝。

+1

''==是比較運算。如果你想要賦值運算符,那麼它就是一個'='。 – Troubadour

+2

如果你剛開始,我可以推薦書單上的精美入門書籍之一? http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list –

+0

我意識到這一點,它只是爲了演示目的來顯示一個示例值:) – Elgoog

回答

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; 
} 
+0

我的編譯器正在返回:'錯誤:對象沒有命名類型' – Elgoog

+0

是的 - 我沒有添加#include語句。我現在將添加它們。 – xtofl

0

enum是一個基本上爲int的可替換標籤。你需要定義一個結構或一個類。

struct type 
{ 
    float position ; 

}; 

type var; 
var.position = 3.4; 
1

你必須讓自己更復雜的類型:

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

及更高版本的這種新type.

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; 
0

你的枚舉類型將需要一個類中的一員,與其他字段一起。例如,

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

隨着MyType實例

數組
MyType *x; 

那麼你就可以做你問期望你需要做的

x[765].t = SOMETHINGELSE; 

分配給枚舉。