我在 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/