c++ - 只是一些简单的错误

标签 c++ binary-search-tree

我遇到了一些我不知道的错误,并且花了很多时间来解决问题。这是我的标题:

#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 行是先前声明的“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;
}

关于c++ - 只是一些简单的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13226486/

相关文章:

algorithm - 为什么 BST left <= parent <= right 不理想?

python - Inorder树走不工作

search - 如何在有序集合中找到元素的索引?

c++ - 是否有 boost::phoenix::at_c 结合 boost::spirit::qi::grammar 的替代方案

c++ - 在 C++ 中为 BST 类(不同类型的键)制作模板

c++ - PostgreSQL不支持嵌套的BEGIN和END语句,即使它不支持自主事务?

c++ - 用户定义的模板约束只接受一个用户定义的模板类

java - 如何处理这个类的可见性问题?

c++ - C++ 中的返回表达式

声明字节数组时出现 C++ 语法错误