2012-03-20 7 views
1

Я искал другие вопросы об ошибке «ожидаемое имя класса» здесь, но все они «... до» {«токен» или «... до»; ».Ошибка: «ожидаемое имя класса»

Решение должно включать правильный файл, но мой файл содержит файл .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

В каких файлах содержится каждый из этих заголовков? Возможно ли, что у вас есть круговой набор включений? –

+0

Не могу ничего сказать без просмотра bst.h. И, пожалуйста, укажите, какой компилятор вы используете. – Sjoerd

+1

Несвязанный: ваш класс, похоже, нарушает правило три/пять. –

ответ

7

Изменить

class SOBTree: public BinarySearchTree 

в

class SOBTree: public BinarySearchTree<T> 

..as BinarySearchTree, это (определенно) шаблон тоже.

1

Возможно ли, что BinarySearchTree также является шаблоном, и вам необходимо получить от BinarySearchTree<T>?

В противном случае очевидно, что BinarySearchTree не был определен. Причиной этого могут быть конфликтующие защитники заголовков в ваших файлах заголовков.

Смежные вопросы