나는 이것에 대해 몇 가지 연구를 해왔고 stackoverflow 형식에 대한 가시성에 대해 이야기하는 몇 가지 유사한 질문을 발견했지만 정확하게 동일한 문제 (또는 적어도 그것은 내가 그것에 대해 몇 시간을 보냈다 고 생각하는 것이다) 일 것이다.C++ 컴파일 : 오류 : 예상되는 생성자, 소멸자 또는 형식 변환 전에 '*'
하자 초점 :
문제
C++ 컴파일러 보고서 "abc.cpp : 132 : 오류 : '*'토큰 전에 예상 생성자, 소멸자, 또는 형식 변환"
문제가보고 된 코드
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);
};
의 나머지, 나는 기능의 나머지 부분은 완전한 기능입니다 보장 할 수 있습니다. 그것은 내가 지금까지 다뤘던 유일한 문제이다.
모든 팁을 크게 높이세요. 시간 내 주셔서 감사드립니다. 당신이 시도 유형을
을 노드입니다 인식 컴파일러를 도울 필요가 같은
그게 다야! 나는 분명히 제안 된 문서를 살펴볼 것이다. 고마워요! – Sergio