2013-03-21 38 views
6

Tôi đã xác định danh sách được liên kết trong C++. Tôi cố gắng để thiết lập một giá trị NULL vào đầu biến (trong constructor của Movie_LinkedList), nhưng tôi nhận:đặt đầu thành NULL ('NULL': số nhận dạng không khai báo)

movie.h (40): lỗi C2065: 'NULL': định không khai báo

xin lưu ý mà tôi không thể bao gồm bất kỳ thư viện trừ iostream

Bất kỳ giúp đánh giá cao!

+1

Đó là vì 'NULL' hasn ' t được định nghĩa. Xác định hoặc đặt 'head = 0' – Nick

+0

Tại sao bạn xóa mã của mình? – doctorless

+0

vì có những sinh viên có thể sao chép mã của tôi .. –

Trả lời

10

Nó không được xác định trong chương trình của bạn. Thông thường, nó được định nghĩa trong một tệp tiêu đề chuẩn (cụ thể là cstddef hoặc stddef.h). Vì bạn bị hạn chế với iostream, nếu bạn không nhận được NULL một cách ngầm định từ tiêu đề đó, bạn cũng có thể sử dụng 0 hoặc, trong C++ 11, nullptr, là từ khóa và không yêu cầu tiêu đề.

+0

bao gồm tệp tiêu đề cho macro là không cần thiết. Tôi không phải là downvoter mặc dù –

+0

OP không được phép bao gồm tiêu đề! –

+0

@Aniket Cách _only_ để nhận 'NULL' là bao gồm một trong các tiêu đề chuẩn xác định nó. –

5

Bạn nên bao gồm <stddef.h> hoặc <cstddef>.

Tuy nhiên bạn cũng có thể sử dụng 0 hoặc nullptr.

+0

Tôi nghĩ 'nullptr' chỉ dành cho C++ 11 – Nick

+0

Op không được phép bao gồm tiêu đề. và gán một con trỏ cho một số nguyên sẽ gây ra lỗi trình biên dịch. –

+1

Không, không. Hãy thử 'int * p = 0;' Rất phổ biến. – metal

1

Không cần thư viện!

trên đỉnh của các tập tin header,

làm điều này:

#ifndef NULL 
#define NULL (0) 
#endif 
+0

Điều này bị cấm theo tiêu chuẩn và kết quả là hành vi không xác định. –

+0

Tệ hơn nữa: định nghĩa bạn cho là không hợp pháp. –

+0

@JamesKanze bây giờ là hợp pháp –

1

sử dụng sau đây bao gồm:

#include <stddef.h> 
+0

OP không thể bao gồm tiêu đề –

+0

@Aniket Anh ta phải, nếu không anh ta không thể sử dụng 'NULL'. –

1

NULL không thực sự là một phần của lõi C hoặc C++ ngôn ngữ; nó được định nghĩa là 0 trong stddef.h

Vì bạn đang sử dụng C++, thích nullptr, là từ khóa và được nhập. (Giả sử nó có sẵn. Nó là một phần của C++ 11, vì vậy về mặt kỹ thuật không phải tất cả các trình biên dịch sẽ hỗ trợ nó; thực tế, bạn sẽ khó có thể tìm được trình biên dịch không)

Các vấn đề liên quan