Непонимание ошибки шаблона в моем коде [C ++] - PullRequest
0 голосов
/ 22 апреля 2020

Я получил ошибку в своем коде:

"Nested name specifier 'Node<T>::' for declaration does not refer into a class, class template or class template partial specialization."

Я не понимаю, почему эта ошибка происходит. Ребята, как я могу решить эту ошибку в своем коде C ++, и функция-член должна реализоваться вне класс.

template<typename T, typename  =typename std::enable_if<isMyType<T>::value>::type>
class Node{
  T t;
public:
  T getT();
};

template<typename T, typename  =typename std::enable_if<isMyType<T>::value>::type>
T Node<T>::getT(){
return t;
}

1 Ответ

2 голосов
/ 22 апреля 2020

Ошибка ясна, нет Node в качестве шаблона класса, принимающего один параметр типа. Вы объявили Node как шаблон класса, принимающий два типа.

Параметры типа по умолчанию должны быть только в объявлении шаблона. В определении вы не предоставите его снова.

Внешнее определение должно быть:

template<typename T,typename U>
T Node<T,U>::getT(){
    return t;
}

Демо

...