-1

我想通过使用 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;
}
4

3 回答 3

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;
于 2012-07-13T05:37:39.833 回答
2

老兄。C/C++ 不能那样工作:)。如果您想要“有意义的名称”(例如“enum state 3”==“crawl”),那么您可以自己将 enum 值映射到文本字符串。

您可以创建静态表,可以使用“switch/case”块,可以使用 STL 映射。有很多选择 - 但您必须自己手动操作。它不是自动内置到语言中的(如 C#)。

于 2012-07-13T05:34:46.540 回答
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) 在模数中

于 2012-07-13T05:51:30.153 回答