คำถามติดแท็ก deleted-functions

3
“ = ค่าเริ่มต้น” แตกต่างจาก“ {}” สำหรับตัวสร้างและตัวทำลายเริ่มต้นอย่างไร
ฉันโพสต์สิ่งนี้เป็นคำถามเกี่ยวกับ destructors เท่านั้น แต่ตอนนี้ฉันเพิ่มการพิจารณาตัวสร้างเริ่มต้น นี่คือคำถามเดิม: ถ้าฉันต้องการให้ destructor ในชั้นเรียนของฉันเป็นเสมือน แต่อย่างอื่นเหมือนกับสิ่งที่คอมไพเลอร์จะสร้างฉันสามารถใช้=default: class Widget { public: virtual ~Widget() = default; }; แต่ดูเหมือนว่าฉันจะได้รับผลกระทบเดียวกันโดยพิมพ์น้อยลงโดยใช้คำจำกัดความที่ว่างเปล่า: class Widget { public: virtual ~Widget() {} }; มีวิธีใดบ้างที่คำจำกัดความทั้งสองนี้ทำงานต่างกัน? จากการตอบกลับที่โพสต์สำหรับคำถามนี้สถานการณ์ของ Constructor เริ่มต้นจะคล้ายกัน ระบุว่าไม่มีความแตกต่างในความหมายระหว่าง " =default" และ " {}" สำหรับ destructors มีความคล้ายคลึงกันเกือบไม่แตกต่างกันในความหมายระหว่างตัวเลือกเหล่านี้สำหรับตัวสร้างเริ่มต้นหรือไม่ นั่นคือสมมติว่าฉันต้องการสร้างประเภทที่วัตถุประเภทนั้นจะถูกสร้างขึ้นและถูกทำลายทำไมฉันอยากจะพูด Widget() = default; แทน Widget() {} ? ฉันขออภัยหากการขยายคำถามนี้หลังจากการโพสต์ต้นฉบับละเมิดกฎ SO …

6
ข้อผิดพลาด: การใช้ฟังก์ชันที่ถูกลบ
ฉันทำงานกับรหัส C ++ ที่เพื่อนเขียนและได้รับข้อผิดพลาดต่อไปนี้ที่ฉันไม่เคยเห็นมาก่อนเมื่อคอมไพล์กับ gcc4.6: error: use of deleted function ‘GameFSM_<std::array<C, 2ul> >::hdealt::hdealt()’ is implicitly deleted because the default definition would be ill-formed: uninitialized non-static const member ‘const h_t FlopPokerGameFSM_<std::array<C, 2ul> >::hdealt::h’ แก้ไข: สิ่งนี้มาจากส่วนหนึ่งของโค้ดโดยใช้ boost MSM: Boost Webpage แก้ไข 2: ไม่มีการ= delete()ใช้ที่ใดก็ได้ในซอร์สโค้ด โดยทั่วไปแล้วข้อผิดพลาดนี้หมายถึงอะไร? ฉันควรมองหาอะไรเมื่อเกิดข้อผิดพลาดประเภทนี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.