मैं टेम्पलेट क्लास विधि के अंदर निरंतर संख्यात्मक अक्षर रखने का समाधान ढूंढने का प्रयास कर रहा हूं। मैं फ्लोट या डबल प्रकारों के साथ उपयोग करने के लिए कुछ गणित टेम्पलेट कक्षाएं बना रहा हूं। समस्या यह है कि डेटा प्रकार के आधार पर अक्षर अलग-अलग होते हैं (उदाहरण के लिए फ्लोट के लिए "0.5 एफ" और डबल के लिए "0.5")। अब तक, मैं दो समाधान के साथ आया हूँ। पहले एक के लिए कुछ काल्पनिक कोड:फ्लोट और डबल लिटरल के लिए टेम्पलेट क्लास में फ़ंक्शन विशेषज्ञता
template <typename T>
class SomeClass
{
public:
T doSomething(T x);
};
template <>
float SomeClass<float>::doSomething(float x)
{
float y = 0.5f;
/*
* Do computations...
*/
return x;
}
template <>
double SomeClass<double>::doSomething(double x)
{
double y = 0.5;
/*
* Do computations...
*/
return x;
}
हर प्रकार इसके साथ प्रयोग किया जाता है के लिए पूरी तरीकों को फिर से लिखने बलों ऊपर दृष्टिकोण।
एक और दृष्टिकोण:
template <typename T>
class SomeClass
{
public:
T doSomething(T x);
private:
T getValue();
};
template <typename T>
T SomeClass<T>::doSomething(T x)
{
T y = getValue();
/*
* Do computations...
*/
return x;
}
template <>
float SomeClass<float>::getValue()
{
return 0.5f;
}
template <>
double SomeClass<double>::getValue()
{
return 0.5;
}
यह एक ही तरीके का विशिष्ट प्रकार के लिए कई बार लिखने के लिए की आवश्यकता नहीं है, लेकिन एक बहुत getValue() हर "जादुई संख्या" होने की जरूरत है कि के लिए तरीकों करने की आवश्यकता है विधि के अंदर प्रयोग किया जाता है।
क्या यह हल करने के लिए कोई और "अधिक सुरुचिपूर्ण" तरीका है?
अपने ही बारे में शाब्दिक हैं, तो मुझे लगता है कि आप कास्टिंग static_cast() –
Mohammad
मैं इसे अपने प्रश्न में उल्लेख नहीं था, उपयोग कर सकते हैं, लेकिन मैं किसी भी रूपांतरण, न तो स्पष्ट है और न ही निहित से बचने के लिए चाहते हैं। – umebe