Почему этот код не компилируется с использованием компилятора MS? - PullRequest
1 голос
/ 29 сентября 2011

Этот код компилируется с использованием компилятора GNU gcc, но не компилируется при использовании Visual Studio 2008.

ошибка sas: "ошибка C2143: синтаксическая ошибка: отсутствует ';' до '*'

Arbol :: Nodo * - указатель на класс внутри Arbol, который работает нормально, если компилируется с использованием кодовых блоков + компилятор gnu gcc.

template <class T>
Arbol<T>::Nodo<T>* Arbol<T>::Alta(Nodo<T>* &nodo,const T d) /////this line is highlited
{
     return nodo;
}

Это странно, если я возьму этот код и снова скомпилирую, он подпрыгнет на три функции под ним и выдает ту же ошибку с этой функцией

 template<class T>
 Arbol<T>::Nodo<T>* Arbol<T>::BuscarDevolver(const T t)
 {
     Nodo<T>* nodo = new Nodo<T>;
     return nodo;
 }

1 Ответ

3 голосов
/ 29 сентября 2011

Добавить typename:

template <class T>
typename Arbol<T>::Nodo<T>* Arbol<T>::Alta(Nodo<T>* &nodo,const T d) /////this line is highlited
{
     return nodo;
}

Вам необходимо пометить квалифицированные имена, которые являются типами явно в шаблоне.

...