Я провел некоторое исследование по этому поводу и обнаружил несколько похожих вопросов о стековом потоке, говорящих о видимости типов, но, похоже, это не совсем та же проблема (или, по крайней мере, я так думаю через несколько часовработаем над этим).
Давайте сосредоточимся:
Проблема
Отчеты компилятора C ++ "abc.cpp: 132: ошибка: ожидаемый конструктор, деструкторили преобразование типа перед '*' token "
Код, в котором сообщается о проблеме
template <class C, class I> ABC<C, I>::Node * ABC<C, I>::buscaTreuIRetornaMinim(Node **node) {
if (*node == NULL) return NULL;
if ((*node)->fesq != NULL) return buscaTreuIRetornaMinim(&(*node)->fesq);
Node *q = *node;
*node = *node->fdre;
return q;
}
Проблема сообщается в первой строке, заголовок функции,До сих пор я понимаю, что проблема заключается в указании 'Node *', но он уже полностью определен, поэтому я не вижу, в чем проблема.
Остальная часть определения класса
class ABC {
public:
ABC(void) : arrel(NULL), numelements(0), altura(0) { }
void inserir(C pclau, I pinfo);
void inordre(void);
I consultar(C pclau);
C minim(void);
C maxim(void);
void esborrar(C pclau);
private:
class Node {
public:
C clau;
I info;
Node *fesq;
Node *fdre;
Node(C pclau, I pinfo, Node *pfesq = NULL, Node *pfdre = NULL) : clau(pclau), info(pinfo), fesq(pfesq), fdre(pfdre) { }
};
Node *arrel;
Node *actual;
int numelements;
int altura;
void inserir(C pclau, I pinfo, Node **node);
void inordre(Node **node);
I consultar(C pclau, Node **node);
C minim(Node **node);
C maxim(Node **node);
void esborrar(C pclau, Node **node);
Node * buscaTreuIRetornaMinim(Node **node);
};
С другой стороны, я могу убедиться, что остальные функции полностью работоспособны.Это единственная проблема, с которой я до сих пор сталкивался.
Любая подсказка будет принята с благодарностью.Заранее спасибо за ваше время.