我在这里搜索了其他“预期的类名称”错误问题,但它们都是“...之前'{'标记”或“...之前';'”。
解决方案是包含正确的文件,但我的文件包含包含继承类的.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 :(得分:7)
更改
class SOBTree: public BinarySearchTree
到
class SOBTree: public BinarySearchTree<T>
..作为BinarySearchTree,(肯定)也是一个模板。
答案 1 :(得分:2)
BinarySearchTree是否也可能是模板,您需要从BinarySearchTree<T>
派生?
否则很明显BinarySearchTree从未被定义过。原因可能是头文件中的标题保护冲突。