Как правило, вы должны поместить все элементы шаблона в заголовочный файл. Шаблоны компилируются по мере использования, и, следовательно, все определение должно быть доступно везде, где они используются. Размещение кода в заголовочном файле решит эту проблему.
Единственный раз, когда вы можете поместить определение шаблона в файл CPP, это когда шаблон будет использоваться только внутри этого файла CPP. Причина в том, что он соответствует стандарту, что все определение доступно для компиляции.
Перемещение содержимого node.cpp в node.h решит проблему.
Странные сценарии
Опять же, вы также можете поместить все в файл CPP и включить файл CPP. C ++ гибок в этом смысле. Я упоминаю об этом только потому, что видел в прошлом. Я на самом деле ушиб мою челюсть, когда она ударилась о верхнюю часть моего стола.