我想通过使用enumType变量获取当前状态。但是使用这些代码我不能得到值..例如,如果enumType = 3状态应该爬行...
#include <iostream>
#include <windows.h>
#include <ctime>
using namespace std;
int main()
{
int enumType;
srand((unsigned)time(0));
enumType = rand()%3;
enum state{
stand,
walk,
run,
crawl,
};
state currentState;
(int)currentState =enumType;
cout<<state.currentState;
system("pause");
return 0;
}
答案 0 :(得分:2)
多德。 C / C ++不能那样工作:)。如果你想要“有意义的名字”(比如“enum state 3”==“crawl”),那么你可以自己将枚举值映射到文本字符串。
您可以创建静态表,可以使用“switch / case”块,也可以使用STL映射。有很多选择 - 但你必须自己手动完成。它不是自动内置到语言中的(如C#)。
答案 1 :(得分:2)
string strState;
switch(currentState)
{
case stand:
strState = "Stand";
break;
case walk:
strState = "walk";
break;
case run:
strState = "run";
break;
case crawl:
strState = "crawl";
break;
}
cout << strState;
答案 2 :(得分:1)
这就是你需要的:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>
#include <cstdlib>
#include <ctime>
int main()
{
srand(time(0));
enum state{
stand,
walk,
run,
crawl,
};
state min=stand;
state max=crawl;
state enumType = (state)(rand()%((max-min)+1));
state currentState;
currentState =enumType;
printf(" %i ",currentState);
return 0;
}
结果是:
1 1 0 1 0 2 ... 每次跑步,0-2之间的不同值因为它是“地板” 新编辑:(max-min)+1)在模数事物中