मुझे यह अजीब समस्या मिल रही है जो मुझे नहीं पता कि ऐसा क्यों होता है। पहली और निम्नलिखित कोड के टुकड़े के दूसरे संकलन, जबकि तीसरे नहीं करता है:पैरामीटर के रूप में निजी नेस्टेड प्रकार का उपयोग
संकलित:
class Foo {
public:
Foo() { Bar(); }
private:
class Bar {};
};
संकलित:
class Foo {
class Bar {}; // Or only forward declare here and define later
public:
Foo(Bar) {}
}
संकलन नहीं करता:
class Foo {
public:
Foo(Bar) {}
private:
class Bar {};
};
पहली बार संकलन करने में तीसरा असफल हो जाता है?
वाह। विकल्प तीन वीएस2015 के कंपाइलर मृत मारता है। अक्सर संकलक दुर्घटना को न देखें। – user4581301
वैसे भी, 'Foo'3 के रचनाकारों को' Foo :: Bar' प्रदान करना होगा, और वे तब से निजी नहीं हो सकते हैं। यह इस कोड को एक असंगत स्थिति में रखता है। आश्चर्य नहीं है कि यह संकलित नहीं करता है, लेकिन नियमों का उल्लेख नहीं कर सकता है। लेकिन फिर दूसरा संकलन क्यों करता है? 'बार 'भी निजी होगा, लेकिन' फू 'कन्स्ट्रक्टर से पहले परिभाषित किया जाएगा। – user4581301