当我尝试编译这段代码时,我遇到了这个结构构造器的问题:
typedef struct Node
{
Node( int data ) //
{
this->data = data;
previous = NULL; // Compiler indicates here
next = NULL;
}
int data;
Node* previous;
Node* next;
} NODE;
当我来的时候,这个错误发生了:
\linkedlist\linkedlist.h||In constructor `Node::Node(int)':|
\linkedlist\linkedlist.h|9|error: `NULL' was not declared in this scope|
||=== Build finished: 1 errors, 0 warnings ===|
最后一个问题是结构,但当它在我的main.cpp中时,它工作得很好,这一次它在一个头文件中,给我带来了这个问题。我正在使用code::块来编译这段代码
发布于 2009-05-29 06:34:21
在C或C++语言中,NULL
不是内置常量。事实上,在C++中,它或多或少已经过时了,只需使用简单的文字0
,编译器将根据上下文执行正确的操作。
在较新的C++ (C++11和更高版本)中,使用nullptr
(在评论中指出,谢谢)。
否则,添加
#include <
stddef.h
>
来获取NULL
定义。
发布于 2009-05-29 12:52:31
请务必使用NULL。它只是#定义为0,从语义上区分它与整数0是非常有用的。
使用0会出现问题(因此会出现NULL)。例如:
void f(int);
void f(void*);
f(0); // Ambiguous. Calls f(int).
下一个版本的C++ (C++0x)包括nullptr
来解决这个问题。
f(nullptr); // Calls f(void*).
发布于 2009-05-29 06:34:55
NULL
不是核心C++语言的原生部分,但它是标准库的一部分。您需要包含一个包含其定义的标准头文件。#include <cstddef>
或#include <stddef.h>
应该就足够了。
如果包含cstddef
或stddef.h
,则可以保证NULL
的定义可用。这是不能保证的,但是如果你包含了许多其他的标准头部,你很可能会得到它的定义。
https://stackoverflow.com/questions/924664
复制相似问题