2013-11-15 11 views
0

Ну, я проверил отсутствующие точки с запятой, и, насколько мне известно, у меня нет циклов включения, так что я немного тупик. Я смотрел другие опубликованные примеры, и я до сих пор не совсем понимаю, что мне не хватает. Я собираюсь угадать, что это связано с использованием шаблонов, с которыми я не имею права, но я действительно не знаю.ожидаемое имя класса до "{" ошибка маркера

In file included from customtester.cpp:6:0: 
MyBSTree.h:23:1: error: expected class-name before â{â token 

Файл:

#ifndef MYBSTREE_H 
#define MYBSTREE_H 

template <typename T>  //not sure which of these I need, 
class AbstractBSTree;  //the include, the forward 
#include "abstractbstree.h" //declaration, or both. 

template <typename T> 
class TreeNode 
{ 
    T m_data; 
    TreeNode<T> * m_right; 
    TreeNode<T> * m_left; 

}; 

template <typename T> 
class MyBSTree:public AbstractBSTree //this would be line 23 
{ 
    TreeNode<T> * m_root; 
    int m_size; 
}; 

#endif 

Все, что я пропускаю? Я не могу изменить «abstractbstree.h»

+3

FYI, как правило, в том числе файлы заголовков является первой в файле. –

+0

где этот класс "AbstractBSTree" определен? –

+0

AbstractBSTree определен в abstractbstree.h, это чистый виртуальный шаблонный класс. Гленн поймал, что мне не хватает внизу. – cts28d

ответ

2

попробовать:

public AbstractBSTree<T> 

компилятор предположит на <T> только внутри тела шаблона и только для шаблонного класса, а не в публичном пространстве

+0

Это было бы так. Я думал, что это может быть что-то, что я забыл с помощью шаблонов. Благодарю. – cts28d

+0

@ user2995084, и вам нужно определение класса, а не только объявление вперед. Предположительно, что в заголовке вы спрашиваете о включении. – juanchopanza

+0

@juanchopanza - мы можем с уверенностью предположить, что он включен в файл include –

2

Вы находитесь отсутствует <T>.

С AbstractBSTree шаблонный класс, необходимо указать параметр шаблона, когда вы извлечь из него для MyBSTree:

template <typename T> 
class MyBSTree:public AbstractBSTree<T> // <-- Use <T> here 
{ 
    TreeNode<T> * m_root; 
    int m_size; 
}; 
Смежные вопросы