1

Enum.GetValuesC# プロジェクトでandを使用しEnum.GetNameましたが、標準の C++ ライブラリに何らかの代替手段があるかどうかを知りたいですか?

4

3 に答える 3

1

これを行う簡単な方法はありません。この件に関していくつかのSOの質問があります(ただし、正確にはこの質問ではありません):

C++列挙型を文字列に変換する簡単な方法はありますか?

C++列挙型を文字列に簡単にマップする方法

于 2012-07-19T19:09:47.397 に答える
1

クラスで自分自身をロールバックできます。

Widget.h:

#include <map>
#include <string>

using namespace std;

class Widget
{
public:
    static Widget VALUE1, VALUE2, VALUE3;

    type GetValue();
    string GetName();
    bool Widget::operator==(const Widget& other) const;

private:
    // specific traits should be declared here
    int i;

    Widget(string name, int value);
    static map<Widget, string> names;
}

Widget.cpp:

Widget::VALUE1 = Widget("VALUE1", 1);
// others

Widget::Widget(string name, int value)
{
    i = value;
    Widget::names[name] = *this; // this should happen after all initialization is done
}

bool Widget::operator==(const Widget& other) const
{
    return (this->i == other.i);
}

注: これはおそらく完全ではありません。テストされておらず、最初の試行で魔法のように機能する可能性はほとんどありません。

于 2012-07-19T19:18:59.007 に答える
0

可能なすべての名前と関連する int 値を取得するすべての機能が必要な場合は、stl::map を使用します。

一般に、c++ で列挙型を使用する場合は、ドキュメントを参照して、可能なすべての列挙値を取得するか、名前空間を使用するか、プログラミング時に利用可能なものを IDE に通知させる必要があります。

ときどき、列挙型を記述するときに、すべての名前付き値の前に、それらが属する列挙型を示す情報を付けます。

于 2012-07-19T19:10:13.467 に答える