我收到了一些我不知道的錯誤,並花了很多時間把我的頭髮拉出來。這裏是我的頭:只是幾個簡單的錯誤
#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行,還有不少其他人說,它期望在'<'標記之前有一個初始化器。我認爲他們都是相同的問題,所以我只在這裏放了幾個。
最後,它說在標題行18:「模板結構MyBSTree重新宣佈爲一種不同的符號。」然後它說我實現1號線的「無效MyBSTree先前聲明」我假設那些一起去
感謝所有幫助
@JonathonReinhart我沒有意識到。謝謝你的鏈接。 – ViscousRandom