दिलचस्प पोस्ट
पांडा डेटाफ्रेम में हर तीन कॉलम के औसत का पता लगाएं वर्गनाम या आईडी से तत्व कैसे प्राप्त करें आईफोन ब्राउज़र से स्थानीय होस्ट पर चलने वाली वेबसाइट पर आप कैसे पहुंच सकते हैं jQuery। एजेक्स () POST अनुरोध 405 को नष्ट कर देता है (विधि अनुमत नहीं है) शोकपूर्ण WCF पर क्या लैम्ब्डा फ़ंक्शंस को थमाया जा सकता है? फ़ायरफ़ॉक्स लॉन्च करें और इसे बंद होने तक प्रतीक्षा करें एसोसिएटिव सरणी से PHP निकालें कुंजी Xcode: कोड वाक्यविन्यास रंग खो देता है एक अन्य वेक्टर पर आधारित वेक्टर में मानों की जगह कतार में अगली फाइल खेलने में कोई देरी से बचने के लिए कतार में एमपी 3 फाइल प्रीलोड करें क्या मैं web.config में maxJsonLength के लिए एक असीमित लंबाई निर्धारित कर सकता हूँ? जहां एक स्थैतिक विधि और जावा में एक स्थैतिक चर संग्रहीत है ढेर या ढेर मेमोरी में एनएसएलॉग गलत एन्कोडिंग FtpWebRequest का उपयोग करके आउटपुट लॉग Android में Firebase async retrive डेटा रुको

सी ++ में दो वर्ग कैसे बनायें जो एक दूसरे को डेटा के रूप में उपयोग करते हैं?

मैं दो वर्गों को बनाने के लिए देख रहा हूं, जिनमें से प्रत्येक में अन्य वर्ग प्रकार का एक ऑब्जेक्ट है। मैं यह कैसे कर सकता हूँ? अगर मैं ऐसा नहीं कर सकता, तो क्या कोई कार्य-आस-पास है, जैसे प्रत्येक कक्षा में दूसरे वर्ग के प्रकार के सूचक होते हैं? धन्यवाद!

यहां मेरे पास क्या है:

फ़ाइल: बार एच

#ifndef BAR_H #define BAR_H #include "foo.h" class bar { public: foo getFoo(); protected: foo f; }; #endif 

फ़ाइल: foo.h

 #ifndef FOO_H #define FOO_H #include "bar.h" class foo { public: bar getBar(); protected: bar b; }; #endif 

फ़ाइल: मुख्य सीपीपी

 #include "foo.h" #include "bar.h" int main (int argc, char **argv) { foo myFoo; bar myBar; } 

$ g ++ main.cpp

 In file included from foo.h:3, from main.cpp:1: bar.h:6: error: 'foo' does not name a type bar.h:8: error: 'foo' does not name a type 

वेब के समाधान से एकत्रित समाधान "सी ++ में दो वर्ग कैसे बनायें जो एक दूसरे को डेटा के रूप में उपयोग करते हैं?"

आप दो वर्गों को अन्य प्रकार की वस्तुओं को सीधे नहीं रख सकते हैं, क्योंकि अन्यथा आपको ऑब्जेक्ट के लिए अनंत स्थान की आवश्यकता होती है (चूंकि फ़ू में एक बार है जिसमें एक फ़ू है जिसमें एक बार है, आदि)

आप वास्तव में दो वर्गों को एक दूसरे को स्टोर पॉइंटर्स बनाकर ऐसा कर सकते हैं, हालांकि। ऐसा करने के लिए, आपको अग्रेषण घोषणाओं का उपयोग करना होगा ताकि दो वर्ग एक दूसरे के अस्तित्व के बारे में जान सकें:

 #ifndef BAR_H #define BAR_H class foo; // Say foo exists without defining it. class bar { public: foo* getFoo(); protected: foo* f; }; #endif 

तथा

 #ifndef FOO_H #define FOO_H class bar; // Say bar exists without defining it. class foo { public: bar* getBar(); protected: bar* f; }; #endif 

ध्यान दें कि दो शीर्षलेखों में एक दूसरे को शामिल नहीं किया जाता है इसके बजाय, वे सिर्फ आगे की घोषणाओं के माध्यम से दूसरे वर्ग के अस्तित्व को जानते हैं। फिर, इन दो वर्गों के लिए। सीपीपी फ़ाइलों में, आप वर्ग के बारे में पूरी जानकारी प्राप्त करने के लिए #include हेडर को #include कर सकते हैं। ये आगे की घोषणा आपको "फू बारर्स की जरूरतों को फू बार बार" के संदर्भ चक्र को तोड़ने की अनुमति देती है।

यह समझ में नहीं आता है अगर ए में बी होता है, और बी में ए होता है, तो यह अनंत आकार होगा। कल्पना कीजिए कि दो बक्से लगाए हुए हैं और दोनों एक-दूसरे के बीच में डालने की कोशिश कर रहे हैं। काम नहीं करता है, है ना?

संकेतक हालांकि कार्य करते हैं:

 #ifndef FOO_H #define FOO_H // Forward declaration so the compiler knows what bar is class bar; class foo { public: bar *getBar(); protected: bar *b; }; #endif