class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
ฉันเชื่อว่าเหตุผลคืออาร์เรย์สามารถเริ่มต้นด้วย=
ไวยากรณ์เท่านั้นนั่นคือ:
int arr[3] = {1,3,4};
คำถาม
- ฉันจะทำสิ่งที่ต้องการได้อย่างไร (นั่นคือเริ่มต้นอาร์เรย์ในตัวสร้าง (ไม่ได้กำหนดองค์ประกอบในเนื้อความ)) เป็นไปได้หรือไม่?
- มาตรฐาน C ++ 03 พูดอะไรเป็นพิเศษเกี่ยวกับการเริ่มต้นการรวม (รวมถึงอาร์เรย์) ใน ctor initializers หรือไม่ หรือความไม่ถูกต้องของรหัสข้างต้นเป็นข้อพิสูจน์ของกฎอื่น ๆ ?
- รายการเริ่มต้น C ++ 0x ช่วยแก้ปัญหาได้หรือไม่
ปล.โปรดอย่าพูดถึงเวกเตอร์, บูสต์ :: อาร์เรย์และความเหนือกว่าอาร์เรย์ซึ่งผมทราบดี