此代码使用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;
}
最佳答案
添加typename
:
template <class T>
typename Arbol<T>::Nodo<T>* Arbol<T>::Alta(Nodo<T>* &nodo,const T d) /////this line is highlited
{
return nodo;
}
您需要标记模板中显式类型的限定名称。