Как правильно определить псевдоним шаблонной структуры?

Рейтинг: 0Ответов: 1Опубликовано: 12.12.2014

Определяю узел дерева

template<typename KeyType,typename ItemType> struct __Node__{
KeyType key;
ItemType item;
list<__Node__*> childs;
};

Хочу дать структуре псевдоним:

template<typename KeyType,typename ItemType> using Node = struct __Node__<KeyType, ItemType>;

Но не выходит. Как правильно пользоваться таким механизмом, чтобы вышло что-то похожее на это:

typedef struct __Node__<KeyType, ItemType> Node<KeyType, ItemType>;

?

Ответы

▲ 1

Вот так надо. Указывайте готовые типы при создании псевдонимов, чтоб компилятор не лез в пустоту.

#include<iostream>
#include<list>

using namespace std;

template<typename KeyType,typename ItemType>
class A{
public:
    KeyType key;
    ItemType item;
    list<A*> l;
};

typedef A<int, int> myStructInt; // здесь нужно указывать аргументы
typedef A<char, char> myStructChar; // и здесь тоже самое
typedef A<int, char> myStruct1, myStruct2; // и здесь тоже самое

int main(){

    return 0;
}