मैं कुछ इस तरह का निर्माण करना चाहते हैं:"templating" एक namespace
File 1:
template<typename Vector>
namespace myNamespace {
class myClass1{ myClass1(Vector v) {...} }
}
File 2:
template<typename Vector>
namespace myNamespace {
class myClass2{ myClass2(Vector v) {...} }
}
बेशक
यह संभव नहीं है, क्योंकि आप टेम्पलेट नामस्थान नहीं कर सकता। इसके बजाय मैं एक नाम स्थान के बजाय एक struct इस्तेमाल कर सकते हैं, लेकिन फिर मैं कई फ़ाइलों पर नाम स्थान कार्यों का प्रसार नहीं कर सकते।
वहाँ ऐसी समस्या के लिए किसी भी समाधान है?
पीएस: मुझे पता है कि मैं कक्षाओं को टेम्पलेट कर सकता हूं, लेकिन फिर मुझे यह निर्दिष्ट करना होगा कि मैं किस वेक्टर प्रकार का उपयोग करना चाहता हूं, जब भी मैं एक नई कक्षा बनाउंगा। इसके बजाय
using namespace myNamespace<int>;
बस टेम्प्लेट का उपयोग वर्गों लिखने के
और इस के बजाय लिखने (या जो भी परिवर्तन):
अपने पीएस के बारे में: आपको लगता है कि एक टेम्पलेटेड नेमस्पेस होने पर कक्षाओं को तुरंत चालू करते समय वेक्टर के प्रकार को निर्दिष्ट करने की आवश्यकता को हटा दिया जाएगा? इस पर ' – stakx
stakx साथ मैं हूँ, तुम अब भी कम से कम एक (काल्पनिक)' नाम स्थान का उपयोग कर MyNamespace की तरह कुछ करना होगा। और आपके कोड में वह 'int' क्या है? –
sbi
हां, लेकिन फिर आप ऐसा कुछ कर सकते हैं: int function1() { नेमस्पेस myNamespace का उपयोग कर; myClass1 c1 = myClass1 (5); myClass2 c2 = myClass2 (2); } int function2() { नेमस्पेस myNamespace का उपयोग कर; myClass1 c1 = myClass1 ('एक'); myClass2 c2 = myClass2 ('b'); } क्षमा करें, वह int गलत है, मैं इसे हटा दूंगा। मैं कोड को सही तरीके से कैसे पेस्ट कर सकता हूं? –
Manuel