Ошибка C2270: модификаторы не разрешены для функций, не являющихся членами

Я получаю эту ошибку при компиляции:

ошибка 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;
}

Спасибо!

2

Решение

У вас есть ошибка C2270, потому что ваш busco Функция — это бесплатная шаблонная функция, она не принадлежит классу. Так const не имеет смысла на подписи: удалить его.

Если вы хотели, чтобы эта функция была функцией-членом, поместите ее определение в точку объявления (я думаю, ABBImp класс), или префикс объявления с именем класса, как вы сделали для Recuperar функция.

7

Другие решения


По вопросам рекламы [email protected]