Отображение класса и функции-члена - PullRequest
0 голосов
/ 01 марта 2010

Может кто-нибудь предложить мне способ сопоставления шаблонных классов с набором функций-членов из другого класса? Всякий раз, когда я вызываю одну из функций внутри класса шаблона, она должна вызывать связанную функцию-член другого класса.

Обновление с использованием варианта использования

template<int walktype>
class Walker
{
   Node* node;

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

    }
};

Пожалуйста, рассмотрите вышеприведенный псевдокод. Я хочу, чтобы решение о переключателе было принято во время компиляции.

Спасибо, Gokul.

Ответы [ 2 ]

2 голосов
/ 02 марта 2010

Кажется, вы хотите, чтобы он был выбран во время компиляции, поэтому вы можете выделить свой шаблон класса следующим образом:

// 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();
    }
};
0 голосов
/ 10 марта 2010

Я нашел способ сделать это, используя boost :: mpl :: map. Мне нужно создать тип из функции и использовать этот тип в качестве параметра шаблона для класса и связать этот класс с исходным классом, используя boost :: mpl :: map.

Спасибо, Gokul.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...