我在我的 C# 项目中使用过Enum.GetValues
and Enum.GetName
,想知道标准 C++ 库中是否有某种替代方案?
问问题
268 次
3 回答
1
你可以自己上课。
小部件.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;
}
小部件.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 回答
1
于 2012-07-19T19:09:47.397 回答
0
如果您需要获取所有可能名称和相关 int 值的所有功能,我会使用 stl::map。
通常,在 c++ 和使用枚举中,您必须查看文档以获取所有可能的枚举值或使用命名空间,或者让 IDE 在您编程时告诉您哪些可用。
有时,在编写枚举时,我会在所有命名值前面加上一些信息,表明它们属于哪个枚举。
于 2012-07-19T19:10:13.467 回答