-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

お前。C/C++ はそのようには機能しません :)。"意味のある名前" ("enum state 3" == "crawl" など) が必要な場合は、enum 値を自分でテキスト文字列にマップする必要があります。

静的テーブルを作成したり、「switch/case」ブロックを使用したり、STL マップを使用したりできます。多くのオプションがありますが、自分で手動で行う必要があります。言語に自動的に組み込まれるわけではありません (C# のように)。

于 2012-07-13T05:34:46.540 に答える
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 に答える
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 に答える