2013-12-20 3 views
1

Я написал этот код, но он не работает!Использование typedef с классом шаблона

Это реализация узла для динамического стека в C++:

template <class E> 

class Record{ 

public: 

    E elem; 

    Record<E> *prec; 
}; 


typedef Record<E> *P; <- error! 

Я не могу ее решить, какое-либо решение? Благодаря

+0

Вы имеете в виду вы получите ошибку компилятора? Какая ошибка? – BoBTFish

+4

Вам нужно заменить 'E' на фактический тип. Например, 'typedef Record * P;' – juanchopanza

+0

@juanchopanza .... почему вы не пишете это в части ответа? – Michael

ответ

5
typedef Record<E> *P; <- error! 

Вы не можете сделать "шаблон ЬурейеЕ", как это в C++ 03. Вы должны заменить E на конкретный тип.

В C++ 11, вы можете использовать using псевдоним, например, так:

template <typename E> 
using P = Record<E>*; 

P<int> p; 
P<float> q; 
+0

+1 из-за простого, тщательного примера, очень хорошо сформулированный! – qrikko

+0

+1 но обратите внимание, что компилятор VC++ по-прежнему не поддерживает псевдонимы шаблонов, afaik. – Hulk

+0

Спасибо, теперь это работает! – Alastor100

Смежные вопросы