映射类和成员函数

时间:2010-03-01 20:21:35

标签: c++ templates

有人可以建议我使用另一个类的一组成员函数映射模板类吗?每当我调用模板类中的一个函数时,它应该调用另一个类的关联成员函数。

使用用例

进行更新
template<int walktype>
class Walker
{
   Node* node;

    bool walk()
    {
        switch(walktype)
        case 1:
            node->firstwalk();
        case 2:
            node->secondwalk();
        ......

    }
};

请将上述内容视为伪代码。 我希望在编译时决定切换案例。

谢谢, 戈库尔。

2 个答案:

答案 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将此类与原始类关联。

谢谢, 戈库尔。