此代码使用GNU gcc编译器进行编译,而如果使用Visual Studio 2008则无法编译。
错误sas:“错误C2143:语法错误:缺少';'在'*'之前
Arbol :: Nodo *是指向Arbol内部类的指针,如果使用codeblocks + 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;
}
答案 0 :(得分:3)
添加typename
:
template <class T>
typename Arbol<T>::Nodo<T>* Arbol<T>::Alta(Nodo<T>* &nodo,const T d) /////this line is highlited
{
return nodo;
}
您需要在模板中明确标记类型的限定名称。