我目前正在写的一类,它允许获取和设置INTERAL程序选项,它应该是相当灵活,易于使用。 具体而言,一个选项由枚举类型和值类型标识,它们具有一对一的关系。例如,枚举IntType上意愿包含具有INT类型的选项。如果两个模板的类型链接,如何使用策略模板?
我心目中的下面的代码,但不知道如何得到它的工作或我是否想在某种程度上我不应该使用的模板。
enum IntType {OPTION1, OPTION2}
enum StringType { OPTION3, OPTION4}
template<class T, class T2>
class Policy{
public:
T2 getValue(const T& a);
void setValue(const std::string& name, const T2& a);
...
}
class A: public Policy<IntType, int>, public Policy<Stringtype, std::string>, ...{
...
}
每个枚举常数具有一个相关联的字符串表示,这是不变的,但选择也作为字符串输入到程序中,所以必须要能够从我应该改变哪个选项的字符串来推断。
但显然,不能用此代码来直接调用设置或获取价值,而不必限定其全模板特殊化。所以
A* a = ...
a->setValue("intoption", 5);
将无法正常工作。
上我应该用什么来得到这个工作的任何指针?
关于如何在编译时派生出OPTION1映射到int和IntType的部分答案,也会很棒。
由于提前, Broes
你的第一个模板参数是你的枚举吗?为什么不简单通过价值传递呢? – Geoffroy
我更新了问题,因为枚举规范不够清楚。 –
好吧,现在我明白你的意思了;) – Geoffroy