有人可以建议我使用另一个类的一组成员函数映射模板类吗?每当我调用模板类中的一个函数时,它应该调用另一个类的关联成员函数。
使用用例
进行更新template<int walktype>
class Walker
{
Node* node;
bool walk()
{
switch(walktype)
case 1:
node->firstwalk();
case 2:
node->secondwalk();
......
}
};
请将上述内容视为伪代码。 我希望在编译时决定切换案例。
谢谢, 戈库尔。
答案 0 :(得分:2)
您似乎希望在编译时选择它,以便您可以像这样专门设置类模板:
// corresponding to if (walktype != 1) ... condition
template<int>
class Walker
{
Node* node;
bool walk()
{
node->secondwalk();
}
};
// corresponding to if (walktype == 1) ... condition
template<>
class Walker<1>
{
Node* node;
bool walk()
{
node->firstwalk();
}
};
答案 1 :(得分:0)
我找到了一种使用boost :: mpl :: map的方法。我需要从函数中创建一个类型,并使用该类型作为类的模板参数,并使用boost :: mpl :: map将此类与原始类关联。
谢谢, 戈库尔。