C++ 模板 NULL 未声明的标识符

标签 c++ templates binary-search-tree

我在 C++ 中遇到模板和 NULL 问题。我正在尝试使用模板在 C++ 中制作 BST。我有一个类元素、treeElement 和 binarySearchTree。

一个 binarySearchTree 有 treeElements 作为节点。每个 treeElement 都有一个 linkedList 元素。每个元素也有一个 long 来识别和检查它是 <、> 还是 ==。

现在我收到错误:NULL 未声明的标识符。我不知道这怎么可能。这是我收到错误的 treeElement 代码:

template <class T>
class TreeElement {
private:
    TreeElement* leftTree;
    TreeElement* rightTree;
    TreeElement* parent;
    Element<T>* value;
public:
    //Here is the error!!
    TreeElement(Element<T>* element){value = element; leftTree = NULL; rightTree = NULL; parent = NULL;};
    ~TreeElement() {
        Element<T>* nextElement;
        if (value != NULL) {
            while (value->getNextElement() != NULL) {
                nextElement = value;
                value = nextElement->getNextElement();
                delete nextElement;
            }
            delete value;
        }
    };
    TreeElement* getLeftTree(){return this->leftTree;};
    TreeElement* getRightTree(){return this->rightTree;};
    TreeElement* getParent(){return this->parent;};
    Element<T>* getValue(){return this->value;};

    void setLeftTree(TreeElement* leftTree){this->leftTree = leftTree;};
    void setRightTree(TreeElement* rightTree){this->rightTree = rightTree;};
    void setParent(TreeElement* parent){this->parent = parent;};
    void setValue(Element<T>* value){this->value = value;};
};

最佳答案

三个选项:

  • 包含标题<cstddef>它定义了 NULL
  • 使用空指针常量,0或 (C++11 起) nullptr而不是狡猾的宏
  • 不要与 null 进行比较,只需在 bool 上下文中使用指针本身即可获得相同的效果(尽管这仅适用于此处对 NULL 的一种使用)

关于C++ 模板 NULL 未声明的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27018198/

相关文章:

c++ - C++ 应用程序如何使用比 RSS 内存更多的堆?

c++ - 调用模板类的构造函数

c++ - 静态 constexpr 模板成员在专门化时给出 undefined reference

c - 将 BST 传递给结构数组

c++ - 可以将指向子对象的指针视为指向父对象的指针吗?

java - 打印 Java 二叉搜索树

c++ - 如何使 C++(共享)库与 clang 和 GCC 兼容?

C++11 线程卡在锁定互斥锁上

c++ - C++ 中的高效模板结构

c++ - vector 析构函数在 _CrtIsValidHeapPointer 处失败