只是一些简单的错误
Just a few simple errors
我遇到了一些我不知道的错误,并且已经花了很多时间把我的头发拔出。这是我的标题:
#ifndef MYBSTREE_H
#define MYBSTREE_H
#include "abstractbstree.h"
#include "MyBSTreeFunc.h"
using namespace std;
template<typename T>
class TreeNode
{
public:
T m_data;
TreeNode* m_right;
TreeNode* m_left;
};
template<typename T>
class MyBSTree:public AbstractBSTree<T> //LINE 18
{
private:
TreeNode<T>* m_root;
public:
void MyBSTree();
int size() const;
bool isEmpty() const;
int height() const;
const T& findMax() const;
const T& findMin() const;
int contains(const T& x) const;
void clear();
void insert(const T& x);
void remove(const T& x);
void printPreOrder() const;
void printPostOrder() const;
void print() const;
};
#endif
和我的实现文件:
第1-6行
void MyBSTree()
{
m_root -> m_data = NULL;
m_root -> m_right = NULL;
m_root -> m_left = NULL;
}
行13-21
template<typename T>
bool MyBSTree<T>::isEmpty() const
{
if (m_root== NULL)
return true;
else
return false;
}
行28-35
template < typename T >
const T& MyBSTree<T>::findMax() const
{
TreeNode* p = m_root;
while(p -> m_right != NULL)
p = p -> m_right;
return p;
}
实施中的第3行的错误说" m_root"在此范围中没有声明。但是第4和第5行很酷。我猜是因为M_DATA不是指针吗?我不知道。
接下来,第14行和第21行,还有很多其他人说,它希望在'&lt;令牌。我认为它们都是同一问题,所以我只放了一些问题。
最后,它对标题中的第18行说:"模板struct mybstree重新串用为另一种符号"。然后说我实施的第1行是先前的" void mybstree"的声明。我假设这些声明在一起。
感谢您的所有帮助。
您需要修复构造函数声明:
template < typename T >
classMyBSTree
{
... // some stuff
public:
MyBSTree(); // no return type
... // some stuff
};
您需要修复构造函数:
template < typename T >
MyBSTree::MyBSTree() // proper ctor definition
{
m_root -> m_data = T(); // use the initializer for that data type
m_root -> m_right = NULL;
m_root -> m_left = NULL;
}
第1-6行:您在名为 void MyBSTree()
的.cpp中定义了独立函数。这不是班级的一部分。您的命名与课程相同,这也很糟糕。看起来您希望这是您的构造函数,在这种情况下,您需要此(我不包括模板内容,因为这不是问题):
// in .h
class MyBSTree {
public:
MyBSTree(); // No void
}
// in .cpp
// Uses MyBSTree namespace.
MyBSTree::MyBSTree() { /* initialize your pointers etc */ }
这似乎是您的主要问题,也可能解决其他问题。
- 编译器无法找到m_roots的原因是因为您的功能不属于类。您可以通过将您的功能放入运算符::(例如
myBSTree::myBSTree(){};
)
来解决此问题。 - 模板函数不能将其放置在其同类单独的文件中,您需要在相同文件中定义所有模板类和功能。将功能的实现移至标题文件中。
相关文章:
- (C++)分析树以计算返回错误值的简单算术表达式
- 显示错误输出的简单数组排序程序
- 无法找到简单的开关大小写枚举错误
- 处理简单 cpp 类构造函数中的错误
- C++20 个模块在 clang (Windows):在最简单的示例中键入信息错误
- 一个非常简单的win32套接字代码,但工作错误
- OpenGL C++(制作简单窗口时抛出错误)
- 我已经安装了用于c++编程的升华3,但在编写了一个简单的程序后,我遇到了以下错误
- boost::spirit--试图编译大多数简单代码的编译器错误
- Cmake无法在qt-creater/collect2上编译简单的测试程序:错误:ld
- 奇怪的 G++ 错误,带有关于左值和赋值的简单代码
- 编译简单的多文件类程序时出现未定义的引用错误
- 来自简单循环的 OpenAcc 错误:内核执行期间的非法地址
- 使用提升过程编译简单的应用程序会生成错误
- 简单的字符串替换给出错误,尽管参数正确
- 为什么使用 int64_t 会产生错误的结果,而双精度则按预期进行简单的整数乘法
- C++中一个非常简单的枚举类错误
- 为什么一个简单的C++程序会有错误的结果?是 #define 引起的吗?
- 用于二分搜索的错误简单功能(C++)
- 指针错误导致的分段错误(简单..)