c++ - Template Class Dependency Issue -
मेरे पास दो वर्ग हैं, मुझे जो मुद्दा आ रहा है वह यह है कि तो मुझे जो समस्या है वह एक परिपत्र निर्भरता है, और मुझे नहीं पता कि यह कैसे लिखना है ताकि यह काम करे। मैंने लेकिन, जैसा कि आप अनुमान लगा सकते हैं, क्योंकि जब मैं इसे इस तरह से परिभाषित करता हूं: मुझे यह कहते हुए एक त्रुटि मिलती है कि यह मिलान योग्य घोषणा नहीं मिल पाती है (जो की तरह मुझे समझ में आती है)। प्रश्न यह है कि: मैं कैसे इस विधि को सही और घोषित कर सकता हूं ? भाषा के दृष्टिकोण से, आप डिज़ाइन का संपूर्ण दृश्य या बिना हल करने की समस्या भी यह कहना मुश्किल है कि यह सबसे अच्छा समाधान है , लेकिन सामान्य दृष्टिकोण परवाह किए बिना काम करना चाहिए। DynamicCollection और
शब्दकोष ।
शब्दकोष से
डायनामिक कलेक्शन से प्राप्त होता है और दोनों वर्ग टेम्पलेट हैं इस तरह दिखें:
टेम्पलेट & lt; typename ValueType & gt; क्लास DynamicCollection; टेम्पलेट & lt; typename कीटाइप, टाइपनामनाम ValueType & gt; क्लास डिक्शनरी: पब्लिक डायनेमिक कलेक्शन & lt; कीवालपेअर & lt; कीटाइप, वैल्यू टाइप & gt; & gt ;;
डायनेमिक कलेक्शन को एक विधि
GroupBy होना चाहिए, जिसका घोषणा इस प्रकार दिखता है: <पूर्व>
टेम्पलेट & lt; typename selector & gt; शब्दकोश & lt; चयनकर्ता, आइकलिंग & lt; मूल्य प्रकार & gt; * & gt; * समूहबी (मानक :: कार्य & lt; चयनकर्ता (मूल्य प्रकार) & gt; मूल्यांकनकर्ता);
डिक्शनरी को
DynamicCollection हैडर में आगे की घोषणा करने की कोशिश की है, और फिर
डिक्शनरी शीर्ष लेख में विधि को परिभाषित करने की कोशिश की है, लेकिन तब मैं इस में आया हूं अजीब स्थिति:
टेम्पलेट & lt; typename selector & gt; शब्दकोश & lt; चयनकर्ता, आइकलिंग & lt; मूल्य प्रकार & gt; * & gt; * डायनेमिक कलेक्शन :: समूहबी (मानक :: कार्य & लेफ्टिनेंट; चयनकर्ता (वैल्यू टाइप) & gt; मूल्यांकनकर्ता);
डायनेमिक कलेक्शन को एक टेम्पलेट तर्क सूची और फ़ंक्शन ऑब्जेक्ट के
ValueType की आवश्यकता है जैसा कि
आइकलिंग रिटर्न में)
ValueType से
डायनेमिक कलेक्शन घोषणा होने की आवश्यकता है। इसलिए, यह स्पष्ट रूप से गलत कोड है, लेकिन मुझे लगता है कि ऐसा कुछ ऐसा होगा (यदि मुझे इसे
डिक्शनरी हैडर में परिभाषित करना होता है):
टेम्पलेट & lt; typename ValueType & gt; टेम्पलेट & lt; typename selector & gt; शब्दकोश & lt; चयनकर्ता, आइकलेंक्शन & lt; मूल्य प्रकार & gt; * & gt; * डायनेमिक कलेक्शन & lt; मूल्य प्रकार & gt; :: समूहबी (मानक :: कार्य & लेफ्टिनेंट; चयनकर्ता (वैल्यू टाइप) & gt; मूल्यांकनकर्ता);
टेम्पलेट & lt; typename ValueType, typename selector & gt; शब्दकोश & lt; चयनकर्ता, आइकलेंक्शन & lt; मूल्य प्रकार & gt; * & gt; * डायनेमिक कलेक्शन & lt; मूल्य प्रकार & gt; :: समूहबी (मानक :: कार्य & लेफ्टिनेंट; चयनकर्ता (वैल्यू टाइप) & gt; मूल्यांकनकर्ता);
डिक्शनरी टेम्पलेट परिभाषित करने से पहले
DynamicCollection प्रकार को परिभाषित करें, और फिर
परिभाषित करने से पहले
DynamicCollection & lt; ValueType & gt ;: GroupBy पी> यह कहा जा रहा है, जबकि आप इसे संकलित कर सकते हैं, आपके पास अभी भी एक चक्रीय निर्भरता है, और यह अक्सर डिजाइन पर गंध होता है चक्रीय निर्भरता को हटाने के लिए विभिन्न तकनीकों हैं, सबसे अधिक आम एक और घटकों में विभाजित है और कोड का एक भाग उच्च / निचले स्तर पर स्थानांतरित करना है इस विशेष मामले में, आप
GroupBy को
DynamicCollection के बाहर एक मुफ्त फ़ंक्शन या उपयोग करने पर विचार करना चाह सकते हैं, इस तरह निर्भरताएं इन में बदल जाती हैं:
GroupBy - free function या component v शब्दकोश v डायनेमिक कलेक्शन
Comments
Post a Comment