我在编译时收到此错误:
错误C2270:'busco':非成员函数不允许使用修饰符
我想我理解原因,但我不知道如何修复它,如果我把const
拿出来我得到了C2662错误。
以下是代码:
template <class T>
class ABBImp: public ABB<T> {
public:
const T& Recuperar(const T &e) const ;
private:
NodoABB<T> * busco(NodoABB<T> * arbol,T &e) const;
protected:
NodoABB<T>* arbol;
};
template <class T>
//If I take this const out I get the other error I talked about
NodoABB<T>* busco(NodoABB<T> * arbol,T &e)const{
if(a!=NULL){
if(arbol->dato==e)
return arbol;
else if (arbol->dato<e)
return busco(arbol->der,e);
else
return busco(arbol->izq,e);
}else{
return NULL;
}
}
template <class T>
const T& ABBImp<T>::Recuperar(const T &e) const{
NodoABB<T> * aux=busco(arbol,e);
return aux->dato;
}
谢谢!
答案 0 :(得分:7)
您有一个错误C2270,因为您的busco
函数是一个免费的模板函数,它不属于一个类。所以const
对签名毫无意义:删除它。
如果您希望此函数成为成员函数,请将其定义放在声明点(我猜ABBImp
类),或者使用类名称为声明添加前缀{{1功能。