g ++ 4.7 सरणी सदस्य प्रारंभिकरण का समर्थन करता है और मैंने इसके साथ खेलना शुरू कर दिया।उपयोगकर्ता परिभाषित प्रकारों के सरणी सदस्य प्रारंभिक
नीचे दिया गया कोड संकलित नहीं करता है।
struct A
{
A(int){};
A(const A&) = delete;
A& operator=(const A&) = delete;
~A(){};
};
struct B
{
B():
a{{0},{1}}
{};
A a[2];
};
B b;
साथ जीसीसी 4.8 (प्री-रिलीज़) त्रुटि संदेश है:
n.cc: In constructor ‘B::B()’:
n.cc:12:20: error: use of deleted function ‘A::A(const A&)’
a{{0},{1}}
^
n.cc:4:8: error: declared here
A(const A&) = delete;
^
वहाँ इस कोड को काम करने के लिए कोई तरीका है? मैं ए के विनाशकों को आसानी से नहीं बदल सकता, मुझे सरणी को प्रारंभ करने के लिए एक चालक-निर्माता या प्रति-निर्माता की आवश्यकता होती है, लेकिन यह काउंटर-अंतर्ज्ञानी लगता है, क्योंकि मैं वास्तव में सभी जगहों पर निर्माण करना चाहता हूं।
यह काम करता है अगर मैं 2 सदस्यों और ए 1 में एक [2] विभाजित करता हूं, और उन्हें अलग से बना देता हूं। हालांकि यह फिश लग रहा है।
':' एक कन्स्ट्रक्टर में प्रतिलिपि बनाने के लिए कॉपी कन्स्ट्रक्टर का उपयोग करता है, और आप इसे ए में हटा देते हैं जिससे आपको कोई त्रुटि मिलती है। –