Ошибка: «ожидаемое имя класса» - PullRequest
1 голос
/ 21 марта 2012

Я перебирал здесь другие вопросы об ошибках "ожидаемого имени класса", но они все "... до" {"токена" или "... до"; "".

Решением было включить правильный файл, но мой файл включает файл .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, поэтому у меня нет других файлов для включения в проект.

Извините за простой вопрос, я просто не знаю, почему происходит ошибка.

Ответы [ 2 ]

7 голосов
/ 21 марта 2012

Измените

class SOBTree: public BinarySearchTree 

на

class SOBTree: public BinarySearchTree<T> 

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

2 голосов
/ 21 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...