我有这段代码
enum type {NOTHING, SOMETHING, SOMETHINGELSE}
type *x;
目前我使用x[765] == SOMETHING
,我如何存储其他值,例如
x[765] == SOMETHINGELSE;
x[765].position == 43.5;
x[765].somevar == 12;
我会在我的问题中为我的可怜措辞道歉,我刚开始使用C ++,我知道我想要什么,我只是不确定如何提问。
感谢。
答案 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;
分配给枚举。