6
การเริ่มต้นอาร์เรย์สมาชิกในตัวสร้างเริ่มต้น
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 …