कोड:में निजी और डिफ़ॉल्ट निर्माता सी ++ 11 और जीसीसी
struct A
{
private:
A() = default; // Version 1.
};
struct B : public A
{};
struct C
{
private:
C() {}; // Version 2.
};
struct D : public C
{};
int main()
{
B b; // Compiles under g++ 4.7.2
D d; // Compilation error under g++ 4.7.2
}
और दो स्थितियों (जीसीसी 4.7.2 के साथ):
- मैं इस कोड को संकलित हैं (संस्करण 1 के साथ ए के कन्स्ट्रक्टर के), समस्याएं नहीं हैं।
- यदि मैं दूसरे कन्स्ट्रक्टर का उपयोग करता हूं, तो gcc मुझे बताता है कि
D::D()
निजी है।
प्रश्न: यदि मैं डिफ़ॉल्ट रचनाकारों का उपयोग करता हूं, तो समस्याएं गायब क्यों होती हैं? यदि A
में निजी कन्स्ट्रक्टर हैं, तो अन्य क्लास अपने कन्स्ट्रक्टर के कार्यान्वयन की "डिफ़ॉल्टता" के बावजूद A
, यहां तक कि इसके व्युत्पन्न वर्गों के उदाहरण भी नहीं बना सकते हैं।
'लाइन एक्स' के साथ न तो टिप्पणी की? –
@ पेरेगिंग-एलके: मैंने अपना उत्तर –
अपडेट किया है http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56429 –