class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Tôi tin rằng lý do là các mảng chỉ có thể được khởi tạo bằng =
cú pháp, đó là:
int arr[3] = {1,3,4};
Câu hỏi
- Làm cách nào tôi có thể làm những gì tôi muốn (nghĩa là khởi tạo một mảng trong một phương thức khởi tạo (không gán các phần tử trong phần thân)). Nó thậm chí có thể?
- Tiêu chuẩn C ++ 03 có nói gì đặc biệt về việc khởi tạo tổng hợp (bao gồm mảng) trong trình khởi tạo ctor không? Hay sự không hợp lệ của đoạn mã trên là hệ quả của một số quy tắc khác?
- Danh sách trình khởi tạo C ++ 0x có giải quyết được vấn đề không?
PS Vui lòng không đề cập đến các vectơ, boost :: array và tính ưu việt của chúng so với mảng mà tôi biết rõ.