Enum.GetValues
C# プロジェクトでandを使用しEnum.GetName
ましたが、標準の C++ ライブラリに何らかの代替手段があるかどうかを知りたいですか?
質問する
268 次
3 に答える
1
これを行う簡単な方法はありません。この件に関していくつかのSOの質問があります(ただし、正確にはこの質問ではありません):
于 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 に答える