मैं निम्नलिखित कोड संकलन किया गया था:अधूरा प्रकार नेस्टेड नाम विनिर्देशक में नाम
class B;
class A {
A();
friend A B::newAObject();
};
class B {
friend A::A();
public:
A newAObject();
};
यह अजीब लग सकता है, लेकिन यह विचार एक वर्ग A
है कि केवल प्रकार B
का एक उद्देश्य से उत्पादन किया जा सकता है करने के लिए किया गया था (जो शायद एक सिंगलटन होगा)।
समस्या यह है कि मैंने इन वस्तुओं के बीच एक परिपत्र निर्भरता बनाई है। A
को B
से पहले परिभाषित किया जाना चाहिए, और B
को A
से पहले परिभाषित किया जाना चाहिए। स्पष्ट रूप से B
घोषित करने के लिए पर्याप्त नहीं है, B
वास्तव में A
(और इसके विपरीत) से पहले पूरी तरह परिभाषित होना चाहिए।
मैं इसके आसपास कैसे हो सकता हूं?
संपादित करें: वास्तविक त्रुटि है: अपूर्ण प्रकार 'बी' नामांकित नाम निर्दिष्ट नाम में नामित।
नोट: यहां एक और पोस्ट है जो इस जैसा है: Error: incomplete type used in nested name specifier, लेकिन यह बहुत ही templatized है और यह मुझे भ्रमित कर रहा था, इसलिए यह पोस्ट।
एक विधि को एक दोस्त बनाने के लिए थोड़ा अजीब बात है। क्या आप वाकई पूरी कक्षा को दोस्त बनाना नहीं चाहते हैं? –
मुझे पता नहीं था कि यह संभव था। यह कैसे किया जाता है? क्या मैं 'बी 'के अंदर' ए' और' मित्र श्रेणी ए 'के अंदर' मित्र वर्ग बी 'लिखता हूं? – anthropomorphic
यह सही है ... –