模板和typedef错误

时间:2015-09-07 14:36:32

标签: c++ templates typedef

我上过这堂课:

template <class T>
class NodoLista
{
public:
    T dato;
    Puntero<NodoLista<T>> sig;
    NodoLista<T>(const T& e, Puntero<NodoLista<T>> s) : dato(e), sig(s)  { };
};

然后我尝试使用这样的typedef:

template <class U>
typedef Puntero<NodoLista<U>> pNodoLista;
void main()
{
    pNodoLista<int> nodo = new NodoLista<int>(1, nullptr);
    cout<<nodo->dato<<endl;
}

我收到一条错误消息,说我的模板不正确。 如何使用typedef:

Puntero<NodoLista<T>> as pNodoLista<T>

2 个答案:

答案 0 :(得分:2)

template <class U>
typedef Puntero<NodoLista<U>> pNodoLista;

应该是

typedef template <class U> Puntero<NodoLista<U>> pNodoLista;

答案 1 :(得分:0)

尝试使用

template <class T>
using pNodoLista = Puntero<NodoLista<T>>;

现在pNodoLista<T>相当于Puntero<NodoLista<T>>

LIVE

如果您的编译器不支持c ++ 11,您可以使用解决方法:

template <class T>
struct pNodoLista
{
    typedef Puntero<NodoLista<T>> type;
};

现在pNodoLista<T>::type相当于Puntero<NodoLista<T>>

LIVE

BTW:main()应该返回int