मैं एक फ़ंक्शन (संभवतः सदस्य फ़ंक्शन नहीं बना रहा हूं, यह महत्वपूर्ण नहीं है ... शायद यह करता है?) जिन्हें अज्ञात संख्या में तर्क स्वीकार करने की आवश्यकता है, लेकिन मैं चाहता हूं कि वे सभी एक ही प्रकार के हों। मुझे पता है कि मैं एक सरणी या वेक्टर में गुजर सकता हूं, लेकिन मैं अतिरिक्त संरचना या यहां तक कि अतिरिक्त ब्रैकेट के बिना सीधे तर्कों की सूची स्वीकार करने में सक्षम होना चाहता हूं। यह खुद के द्वारा विविधतापूर्ण कार्यों की तरह दिखता नहीं है, और मुझे यकीन नहीं था कि इस w/variadic टेम्पलेट फ़ंक्शंस के बारे में कैसे जाना है। यहाँ है कि मैं क्या (, lol सही होने की संभावना नहीं कोड की तुलना में अधिक है, और पूरी तरह से नहीं ड्रेगन की सूची प्राप्त करने के प्रयोजन के लिए) के लिए लक्ष्य कर रहा हूँ अनिवार्य रूप से बताया गया है:सरणी, वेक्टर, structs, आदि का उपयोग कर variadic समारोह या variadic टेम्पलेट समारोह w/बाहर पारित सभी तर्कों के लिए एक प्रकार निर्दिष्ट?
//typedef for dragon_list_t up here somewhere.
enum Maiden {
Eunice
, Beatrice
, Una_Brow
, Helga
, Aida
};
dragon_list_t make_dragon_list(Maiden...) {
//here be dragons
}
या
template<Maiden... Maidens> dragon_list_t make_dragon_list(Maidens...) {
//here be dragons
}
उपयोग
dragon_list_t dragons_to_slay
= make_dragon_list(Maiden.Eunice, Maiden.Helga, Maiden.Aida)
;
उपरोक्त पहले से ही कुछ चीजों की कोशिश की, कोई पासा नहीं। सुझाव? स्पष्ट oversights मैंने किया हो सकता है? मैं जानता हूँ कि यह बजाय यह करने के लिए एक बहुत बड़ा सौदा नहीं हो सकता है:
dragon_list_t make_dragon_list(std::array<Maiden> maidens) {
//here be dragons.
}
dragon_list_t dragons_to_slay
= make_dragon_list({Maiden.Eunice, Maiden.Helga, Maiden.Aida})
;
लेकिन मैं बहुत बल्कि यदि संभव हो तो यह पहली बार जिस तरह से ऐसा करने में सक्षम होगा।
+1 जो उसने पूछा था, हालांकि यह बेहतर या खराब – Potatoswatter
के लिए है, मैंने यह जानने के लिए पर्याप्त विविध टेम्पलेट्स के साथ नहीं खेला है कि प्रारंभिक परिवर्तनीय कहलाता है, लेकिन std :: array रूपांतरण +1 है, उस बारे में सोचा नहीं था। –
हम्म, मुझे लगता है कि अस्वीकार-प्रारंभिक टेम्पलेट सामान्य मामले के लिए अच्छा नहीं है। यदि ड्रैगन बेस क्लास था, तो आपका पहला तर्क (या आपके सभी तर्क), एक व्युत्पन्न वर्ग हो सकता है, और एक दूसरे के लिए परिवर्तनीय नहीं है। जब ड्रैगन एक enum है, यह वही बात हो सकती है यदि आपकी पहली कक्षा पूर्णांक प्रकार में परिवर्तनीय है लेकिन एक पूर्णांक प्रकार नहीं है। मुझे लगता है कि ओवरलोडिंग पर भरोसा करना अधिक एक्स्टेंसिबल है। –