На самом деле, в определении шаблона класса должно быть указано Node* nxt
, и оно будет иметь то же значение, что и Node<T>* nxt
. В общем, внутри определения шаблона класса C
с параметрами шаблона T1
, T2
, ... или такого, вы можете просто написать C
, и это будет эквивалентно C<T1, T2, ...>
. Попробуйте, он скомпилируется. (Чтобы быть более точными, то типа Node
ведет себя так, как будто он объявлен как вложенный тип внутри класса.)
Вне определение класса (и определения функций члена), вы должны поставить параметры шаблона, а чем просто писать Node
сам по себе, потому что имя Node
обозначает шаблон, а не класс; шаблон класса не является типом, но класс, полученный путем создания экземпляра шаблона класса с параметрами шаблона, является типом.
Активирован для 'Node *' внутри бит класса. Я предпочел объяснить это с помощью внешней части, чтобы дать понять, что OP - поразительная разница между ними - класс шаблона и тип. – legends2k