Ожидаемое имя класса до "{" ошибка маркера

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

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
</t></typename></t></t></typename></typename>

Что-нибудь мне не хватает? Я не могу изменить "abstractbstree.h"

2 ответа

пытаться:

public AbstractBSTree

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


Вам не хватает .

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

template <typename t="">
class MyBSTree:public AbstractBSTree<t> // <-- Use <t> here
{ TreeNode<t> * m_root; int m_size;
};
</t></t></t></typename>

licensed under cc by-sa 3.0 with attribution.