Я пытаюсь создать универсальный класс, который обрабатывает целые, двойные и строковые значения.Однако при попытке создать экземпляр класса шаблона с помощью я получаю следующее сообщение об ошибке:
error: 'double' is not a valid type for a template constant parameter
Создание экземпляра полностью работает с типами int, как и внутренний код, хотя я не сделал его в строкутипа еще.Кажется, что это должно быть хорошо, так как вы можете создать экземпляр вектора и т. Д. Есть ли что-то, что я здесь упускаю?
// file forest.h
template<typename NODETYPE> class Forest
{
template<NODETYPE> // Line 15
friend Forest<NODETYPE>& operator+(Forest<NODETYPE>& f1,
Forest<NODETYPE>& f2);
template<NODETYPE> // Line 17
friend ostream& operator<<(ostream& output,
const Forest<NODETYPE>& f1);
template<NODETYPE> // Line 19
friend void outputHelper(ostream& output,
const ForestNode<NODETYPE>& currentNode,
int depth);
/* ... */
};
Ошибка происходит следующим образом:
\project 4\forest.h|341|instantiated from here|
\project 4\forest.h|15|error: 'double' is not a valid type for a template constant parameter|
\project 4\forest.h|17|error: 'double' is not a valid type for a template constant parameter|
\project 4\forest.h|19|error: 'double' is not a valid type for a template constant parameter|