2010-02-16 16 views
11

Bunun neden olduğu hakkında hiçbir fikrim yok. Kontrol ettim, iki kez kontrol ettim ve üç kez kontrol ettim kaşlı ayraçlar, noktalı virgüller, etrafta taşınan marangozlar, vs. ve hala bana bu hatayı veriyor.Beklenen kurucu, yıkıcı veya tür dönüşümü '*' tokenından önce

İlgili kod aşağıdaki gibidir. Çünkü on line

BinTree.h

#ifndef _BINTREE_H 
#define _BINTREE_H 

class BinTree 
{ 
private: 
    struct Node 
    { 
     float data; 
     Node *n[2]; 
    }; 
    Node *r; 

    Node* make(float); 

public: 
    BinTree(); 
    BinTree(float); 
    ~BinTree(); 

    void add(float); 
    void remove(float); 

    bool has(float); 
    Node* find(float); 
}; 

#endif 

Ve BinTree.cpp

#include "BinTree.h" 

BinTree::BinTree() 
{ 
    r = make(-1); 
} 

Node* BinTree::make(float d) 
{ 
    Node* t = new Node; 
    t->data = d; 
    t->n[0] = NULL; 
    t->n[1] = NULL; 
    return t; 
} 
+2

yararlı olacaktır, (b) belirtilen hangi derleyici hangi platformu' üzerine kullanıyor. –

+0

İç koruyucularınızın güvende olmadığı belirtilmelidir. Derleyici için büyük harfle başlayan altçizgi ile başlayan bir isim ayrılmıştır. 'BINTREE_H' 'BINTREE_H' – GManNickG

cevap

21

:

Node* BinTree::make(float d) 

tip Nodeclass BinTree üyesidir.

Make it: kodunda o (c) oluşur ve nerede (a) tam hata mesajında ​​kopyalanan eğer

BinTree::Node* BinTree::make(float d) 
+0

Geez 'i değiştirmek gibi bir şey yapmalısınız, bunu yapmak zorunda olduğunuzu bilmiyordum. Bunu benim için temizlediğin için çok teşekkürler! – Freezerburn

+2

Bu zor. İlginç bir şekilde, * Parametreler * ile "BinTree ::' - yalnızca dönüş türlerini "tanımak zorunda değilsiniz. –

+1

@j_random_hacker: parametre-bildirimi (ve işlevin ismini tanımlayan tanımlayıcıdan sonra işlev tanımının bir parçası olan her şey) 'sınıf tanımı' için olası bir beyanın kapsamıdır (3.3.6/5 "). Sınıf kapsamı "). Diğer bir deyişle, bir sınıfın tüm üyeleri, işlevin adından sonra * üye fonksiyon tanımları için * kapsam dahilindedir. Bu yüzden dönüş tipi sınıfta olmanın yararını elde etmez; çok erken geliyor. C++ 0x, bu konuda çalışmanıza izin veren yeni bir * sondan-geri-tür * sözdizimine sahiptir, ancak şablonlarda dönüş türlerinin çıkarılması için gerçekten eklenmiştir. –

İlgili konular