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

时间:2014-11-19 13:35:18

标签: c++ templates binary-search-tree

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

binarySearchTree将treeElements作为节点。每个treeElement都有一个链接的元素列表。每个元素还有一个很长的标识,并检查它是否是<,>或==。

现在我收到错误: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;};
};

1 个答案:

答案 0 :(得分:2)

三个选项:

  • 包含定义<cstddef>
  • 的标题NULL
  • 使用空指针常量0或(自C ++ 11开始)nullptr而不是狡猾的宏
  • 不要与null比较,只需在布尔上下文中使用指针本身就可以获得相同的效果(尽管这只适用于您对NULL的一种使用)