好吧,我已经检查了缺少的分号,据我所知,我没有任何包含循环,所以我有点难过。我一直在看其他发布的例子,但我仍然没有看到我所缺少的内容。我猜这与使用我没有正确处理的模板有关,但我真的不知道。
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”
答案 0 :(得分:2)
尝试:
public AbstractBSTree<T>
编译器将仅在模板体内假设<T>
,仅针对模板化类,而不是公共空间
答案 1 :(得分:2)
您错过了<T>
。
由于AbstractBSTree是一个模板类,因此当您从MyBSTree派生模板参数时需要指定模板参数:
template <typename T>
class MyBSTree:public AbstractBSTree<T> // <-- Use <T> here
{
TreeNode<T> * m_root;
int m_size;
};