Tengo un problema con este constructor de estructuras cuando intento compilar este código:
typedef struct Node
{
Node( int data ) //
{
this->data = data;
previous = NULL; // Compiler indicates here
next = NULL;
}
int data;
Node* previous;
Node* next;
} NODE;
cuando vengo se produce este error:
\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 ===|
El último problema fue la estructura, pero funcionó bien cuando estaba en mi main.cpp, esta vez está en un archivo de encabezado y me está dando este problema. Estoy usando Code :: Blocks para compilar este código

<cstddef>es la opción más limpia.Utilice NULL. De todos modos, está #definido como 0 y es muy útil distinguirlo semánticamente del entero 0.
Hay problemas con el uso de 0 (y por lo tanto NULL). Por ejemplo:
void f(int); void f(void*); f(0); // Ambiguous. Calls f(int).La próxima versión de C ++ (C ++ 0x) incluye
nullptrpara solucionar este problema.f(nullptr); // Calls f(void*).fuente
((void *)0)por la mayoría de las implementaciones de bibliotecas estándar de C.((void *)0)es incorrecto en C ++, porquevoid*no es coercible a otros tipos de punteros como lo es en C. glibc, por ejemplo,#define NULL 0cuando__cplusplusse define.NULLno es una parte nativa del lenguaje central C ++, pero es parte de la biblioteca estándar. Debe incluir uno de los archivos de encabezado estándar que incluyen su definición.#include <cstddef>o#include <stddef.h>debería ser suficiente.Se
NULLgarantiza que la definición de estará disponible si incluyecstddefostddef.h. No está garantizado, pero es muy probable que incluya su definición si incluye muchos de los otros encabezados estándar.fuente
¿Está incluyendo "stdlib.h" o "cstdlib" en este archivo? NULL está definido en stdlib.h / cstdlib
#include <stdlib.h>o
#include <cstdlib> // This is preferrable for c++fuente
No lo use
NULL, C ++ le permite usar lo sin adornos en su0lugar:previous = 0; next = 0;Y, al igual que en C ++ 11, por lo general no debería utilizar ni
NULLo,0ya que le proporciona unnullptrtipostd::nullptr_t, que se adapta mejor a la tarea.fuente