मेरे C ++ प्रोजेक्ट में, मेरे पास दो कक्षाएं हैं, Particleऔर Contact। में Particleवर्ग, मैं एक सदस्य चर है std::vector<Contact> contactsजो एक के सभी संपर्कों को शामिल Particleवस्तु, और इसी सदस्य कार्यों getContacts()और addContact(Contact cont)। इस प्रकार, "Particle.h" में, मैं "Contact.h" शामिल करता हूं।
में Contactवर्ग, मैं कोड के लिए निर्माता को जोड़ना चाहते हैं Contactकि कॉल करेंगे Particle::addContact(Contact cont)तो यह है कि, contactsदोनों के लिए अद्यतन किया जाता है Particleजिन वस्तुओं पर के बीच Contactवस्तु जोड़ा जा रहा है। इस प्रकार, मुझे "Contact.cpp" में "पार्टिकल.एच" को शामिल करना होगा।
मेरा सवाल यह है कि यह स्वीकार्य / अच्छा कोडिंग अभ्यास है या नहीं, और यदि नहीं, तो मैं जो भी हासिल करने की कोशिश कर रहा हूं उसे लागू करने का एक बेहतर तरीका होगा (सीधे शब्दों में कहें, जब भी कोई नया संपर्क होता है, तो विशिष्ट कण के लिए संपर्कों की सूची को अपडेट करना। बनाया गया है)।
इन वर्गों को एक Networkवर्ग द्वारा एक साथ बांधा जाएगा जिसमें एन कण ( std::vector<Particle> particles) और एनसी संपर्क ( std::vector<Contact> contacts) होंगे। लेकिन मैं इस तरह के कार्य करने में सक्षम होना चाहता था particles[0].getContacts()- क्या Particleइस मामले में कक्षा में इस तरह के कार्य करना ठीक है , या इस उद्देश्य के लिए C ++ में एक बेहतर संघ "संरचना" है (दो संबंधित वर्गों का एक अन्य वर्ग में उपयोग किया जा रहा है) ।
मुझे यहां एक दृष्टिकोण बदलाव की आवश्यकता हो सकती है कि मैं इसे कैसे संपर्क कर रहा हूं। चूँकि दो वर्ग एक Networkक्लास ऑब्जेक्ट से जुड़े होते हैं , क्या यह विशिष्ट कोड / क्लास ऑर्गनाइजेशन है जिससे कनेक्टिविटी की जानकारी पूरी तरह से Networkऑब्जेक्ट द्वारा नियंत्रित होती है (जिसमें एक कण ऑब्जेक्ट को उसके संपर्कों के बारे में पता नहीं होना चाहिए और, परिणामस्वरूप, इसका getContacts()सदस्य नहीं होना चाहिए। समारोह)। फिर, यह जानने के लिए कि किसी विशिष्ट कण में क्या संपर्क है, मुझे Networkऑब्जेक्ट के माध्यम से वह जानकारी प्राप्त करने की आवश्यकता होगी (उदाहरण के लिए, उपयोग करना network.getContacts(Particle particle))।
क्या यह एक विशिष्ट वस्तु के लिए कम विशिष्ट (शायद हतोत्साहित) सी ++ क्लास डिज़ाइन होगा जो कि ज्ञान, साथ ही (यानी, उस जानकारी तक पहुंचने के कई तरीके हैं - या तो नेटवर्क ऑब्जेक्ट या कण ऑब्जेक्ट के माध्यम से, जो भी अधिक सुविधाजनक लगता है )?
Networkक्लास ऑब्जेक्ट होता है जिसमें Particleऑब्जेक्ट्स और Contactऑब्जेक्ट होते हैं, तो मैं ठेठ (शायद इष्ट / प्रोत्साहित) दृष्टिकोण के लिए पूछ रहा हूं । उस आधार ज्ञान के साथ, फिर मैं यह आकलन करने की कोशिश कर सकता हूं कि यह मेरी विशिष्ट आवश्यकताओं के साथ फिट है या नहीं, जो अभी भी पता लगाया जा रहा है / विकसित किया गया है क्योंकि मैं परियोजना में साथ जाता हूं।