मान लीजिए मैं निम्नलिखित वर्ग है विशेषज्ञता:टेम्पलेट वर्ग विधि
template <typename T>
class MyClass
{
public:
void SetValue(const T &value) { m_value = value; }
private:
T m_value;
};
मैं समारोह के एक विशेष संस्करण कैसे लिख सकते हैं, टी = नाव के लिए (या किसी भी अन्य प्रकार)?
नोट: एक साधारण अधिभार पर्याप्त नहीं होगा क्योंकि मैं केवल टी = फ्लोट के लिए फ़ंक्शन उपलब्ध होना चाहता हूं (यानी MyClass :: SetValue (float) इस उदाहरण में कोई समझ नहीं लेता है)।
आपके आंशिक टेम्पलेट विशेषज्ञता जवाब ने सिर पर नाखून मारा! बस मैं क्या देख रहा था, धन्यवाद। –
दरअसल, यह आपके दूसरे उदाहरण में स्पष्ट टेम्पलेट विशेषज्ञता है: यदि आप वहां थे, तो आपको 1 में से 1 टेम्पलेट तर्क प्रदान कर रहे हैं, आपको 2 प्रदान करने की आवश्यकता होगी। एक और बिंदु यह है कि ये विशेष कार्य स्पष्ट रूप से यदि आप टेम्पलेट को हेडर फ़ाइल में डालते हैं और इसे दो बार शामिल करते हैं तो एक अलग संकलन इकाई (हेडर फ़ाइल नहीं) में होना आवश्यक है। – Markus