नोट: यह प्रश्न केवल छोटे से tinyxml से संबंधित है, हालांकि इस तरह के विवरण सहित अवधारणा को बेहतर तरीके से चित्रित करने में मदद मिल सकती है।किसी अन्य वर्ग/नामस्थान में फ़ंक्शन टेम्पलेट का विशेषज्ञता?
मैंने एक फ़ंक्शन टेम्पलेट लिखा है जो एक मूल एक्सएमएल नोड्स बच्चों के माध्यम से पुन: सक्रिय होगा, बच्चे तत्व के मूल्य को पुनः प्राप्त करेगा और फिर उस बच्चे तत्व तत्व को वेक्टर पर धक्का देगा।
'मान प्राप्त' भाग भी एक समारोह टेम्पलेट के रूप में लिखा है:
अर्थात
template <typename Type>
Type getXmlCollectionItem(
const char* elementName, TiXmlNode* child, TiXmlNode* parent);
पुनर्प्राप्ति भाग के लिए विशेषज्ञताओं, चाइल्ड तत्व मान, उदा के विभिन्न प्रकार के लौटने के लिए कर रहे हैं std :: स्ट्रिंग और अन्य कस्टम ऑब्जेक्ट्स।
अर्थात
template <>
std::string getXmlCollectionItem<std::string>(
const char* elementName, TiXmlNode* child, TiXmlNode* parent);
template <>
MyObject getXmlCollectionItem<MyObject>(
const char* elementName, TiXmlNode* child, TiXmlNode* parent);
यह सब काम करता है पूरी तरह से अच्छी तरह से, लेकिन यह मुझे लगा कि यह एक साझा समारोह पुस्तकालय में है करने के लिए जब tinyxml फाइलों के साथ काम कर बहुत उपयोगी होगा।
प्रश्न: क्या एक नामस्थान में फ़ंक्शन टेम्पलेट घोषित करना संभव है उदा। namespace UtilityFunctions
, जिसमें 'MyObject'
जैसे विशिष्ट ऑब्जेक्ट प्रकारों का कोई ज्ञान नहीं है, और उसके बाद उस नाम टेम्पलेट के अन्य नामस्थानों में विशेषज्ञता टेम्पलेट की घोषणा और परिभाषित करें जिनके पास 'MyObject'
जैसे विशिष्ट ऑब्जेक्ट प्रकारों का ज्ञान है?
मेरा झुकाव यह है कि यह संभव नहीं है, लेकिन एक सामान्य फ़ंक्शन टेम्पलेट रखने की अवधारणा मुझे उस कार्यक्षमता के करीब आने का एक वैकल्पिक तरीका होने के लिए पर्याप्त उपयोगी लगती है, जिसे मैं ढूंढ रहा हूं। ..
क्षमा करें यदि कोई भी शब्दावली गलत है या स्पष्टीकरण अस्पष्ट है। मैंने इस विषय के आस-पास बहुत सारे शोध किए हैं (उसी नामस्थान के भीतर कार्य करने वाले फ़ंक्शन टेम्पलेट विशेषज्ञता के बिंदु तक पहुंचने के लिए) लेकिन अभी तक कोई निश्चित उत्तर नहीं मिला है।
आप फ़ंक्शन ओवरलोड का उपयोग कर सकते हैं ... वापसी बूल या त्रुटि कोड और संदर्भ द्वारा आउट पैरामीटर पास करें। – AJG85
हां यह बहुत आसान होगा :) –
[हर्ब सटर द्वारा यह आलेख] (http://www.gotw.ca/publications/mill17.htm) फ़ंक्शन विशेषज्ञता पर आपको प्रभावित कर सकता है ;-) – AJG85