2012-03-20 62 views
1

我已經通過其他「預期的類名」錯誤問題在這裏搜索,但它們都是「......之前」{'token'「或」...之前';' 」。錯誤:「期望的類名」

解決方案是包含正確的文件,但我的文件包括包含繼承類的.h文件。

#include "BinaryNode.h" 
#include "bst.h" 

template <class T> 
class SOBTree: public BinarySearchTree { //Expected Class Name 
public: 
    void insert(const T& x); 
    void remove(const T& x); 
    int reportComparisonCount(); 
    double reportCPUTime(); 


private: 
    void insert(const T & x, BinaryNode<T> * & t); 
    void RotateRight(BinaryNode<T> * & root); 
    void RotateLeft(BinaryNode<T> * & root); 
    BinaryNode<T> *root; 

}; 

繼承的類在bst.h中定義,所以我沒有其他文件包含在項目中。

對不起,我只是不知道錯誤發生的原因。

+0

這些標題包含哪些文件?有沒有可能你有一個循環的包括? – 2012-03-20 22:51:56

+0

如果不查看bst.h,則無法說出任何內容。並請說明您使用的編譯器。 – Sjoerd 2012-03-20 22:52:05

+1

無關:你的班級似乎違反了三/五的規則。 – 2012-03-20 22:53:17

回答

7

變化

class SOBTree: public BinarySearchTree 

class SOBTree: public BinarySearchTree<T> 

..as BinarySearchTree,是(絕對)的模板了。

1

BinarySearchTree可能也是一個模板,你需要從BinarySearchTree<T>派生?

否則很明顯BinarySearchTree從未被定義過。原因可能是頭文件中的頭文件衝突。