2011-01-03 31 views
8

Tôi đã quen sử dụngInline mảng khởi

new int[] {1,2,3,4,5}; 

cho khởi tạo mảng. Nhưng có vẻ như ngày nay, điều này không hoạt động nữa, tôi phải nêu rõ có bao nhiêu phần tử, với

new int[5] {1,2,3,4,5}; 

Vậy các trình biên dịch quên đếm như thế nào?

Và để đặt câu hỏi kín này, có cách nào để bỏ qua số lượng phần tử không?

+0

là cú pháp này 'new int [5] {1,2,3,4,5};' thực sự có sẵn? – Dims

Trả lời

16

Điều này chưa bao giờ hoạt động trong phiên bản hiện tại của C++, bạn chỉ có thể zero-initialize (hoặc không khởi tạo) mảng được phân bổ động.

gì đã luôn luôn làm việc là không được cấp phát động mảng khởi tạo:

int myarray[] = {1, 2, 3, 4, 5}; 

Có lẽ bạn đang nhầm lẫn nó với điều này?

Ngay cả trong C++ 0x, không phải cú pháp pháp lý để bỏ qua trình chỉ định kích thước mảng rõ ràng trong một biểu thức mới.

+0

Có, đó phải là ... – Gzorg

2

C++ chưa bao giờ được phép khởi tạo mảng với kích thước không xác định của các phần tử như trên. Chỉ có 2 cách tôi biết, là chỉ định số lượng phần tử hoặc sử dụng con trỏ.