В исходном файле вам нужно указать BinaryTree<T1>
вместо BinaryTree
. т.е.
template <typename T1>
BinaryTree<T1>* BinaryTree<T1>::addLeftLeaf(BinaryTree<T1>* node)
{
return node;
}
Вы можете ссылаться только на шаблон без списка его параметров в теле класса / структуры.
Также следует помнить, что в целом плохая идея иметь в файлах .cpp
неспециализированные шаблоны, потому что это означает, что люди не смогут неявно создавать их экземпляры (без #include
* .cpp
).
Как правило, в .cpp
должны идти только специализированные шаблоны. Неспециализированные шаблоны должны жить в .h
.
Если вы знаете, что делаете, и планируете создавать экземпляры шаблонов вручную, то непременно поместите тело в .cpp
, но обычно это не то, что делают люди.