templates - C++: Inheritance v. Containment for a templatized class -
मेरे पास निम्न संरचना है:
टेम्पलेट & lt; typename T & gt; संरचना ओडपी {टी एम_टी; };
मैं इसे विशेषज्ञ करना चाहता हूं ताकि मैं एक ऑपरेटर जोड़ूंगा ताकि टाइप एसटीएल सेटों के साथ अच्छी तरह से नाटकों हो। (मैं सीधे ओडीपी
को संशोधित नहीं कर सकता, यह लीगेसी कोड है।) यहां दो तरीके हैं जो मुझे करने के बारे में है:
struct Ftw: public ओडीपी & lt; int & gt; {बूल ऑपरेटर == (कॉन्स्ट एफटीडब्ल्यू और आरए) {रिटर्न एम_ टी == आरएमएसएम_टी; }}; संरचना FtwContain {Odp & lt; int & gt; ODP; बूल ऑपरेटर == (कॉन्स्ट एफटीवी कॉन्टैनैंड और आरए) {return odp.m_t == rhs.odp.m_t; }};
क्या पहले से दूसरे को पसंद करने का कोई कारण है? क्लीनर कोड की अनुमति देने के लिए पहला तरीका दिखाई देता है:
Ftw ftw; Ftw.m_t = 2; FtwContain ftwContain; FtwContain.odp.m_t = 2;
(इसके अलावा, यह एक मौका है कि मैं "टेम्पलेट विशेषज्ञ" शब्द के बारे में उलझन में हूं।)
मुझे विश्वास नहीं है कि कोई नया प्रकार बनाने की कोई ज़रूरत नहीं है - बस एक नि: शुल्क कार्य लिखें:
टेम्पलेट & lt; typename T & gt; बूल ऑपरेटर == (कॉन्स्ट ओडीपी & lt; T & gt; ए, कंस्ट्र ओडीपी & lt; T & gt; और amp; बी) {वापस a.m_t == बी.एम_टी; }
Comments
Post a Comment