模板和 typedef 错误

Template and typedef errors

我知道了 class:

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>
template <class U>
typedef Puntero<NodoLista<U>> pNodoLista;

应该是

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

尝试使用

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

顺便说一句:main() 应该 return int.