我一直在做這方面的一些研究,並發現了一些關於類型的可見性的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 2011-03-03 02:17:14