साथ निर्माता, एक टेम्पलेट समारोह है कि उदाहरण के लिए तर्क के परिवर्तनशील लेता है, बनाने के लिए इस Vector< T, C >
वर्ग निर्माता में क्या यह संभव है:सी ++ खाका कक्षा चर तर्क
template < typename T, uint C >
Vector< T, C >::Vector(T, ...)
{
va_list arg_list;
va_start(arg_list, C);
for(uint i = 0; i < C; i++) {
m_data[ i ] = va_arg(arg_list, T);
}
va_end(arg_list);
}
यह लगभग काम करता है, लेकिन अगर किसी को कॉल Vector< double, 3 >(1, 1, 1)
, केवल पहले तर्क में सही मान है। मुझे संदेह है कि पहला पैरामीटर सही है क्योंकि इसे फंक्शन कॉल के दौरान double
पर डाला जाता है, और अन्य को int
एस के रूप में व्याख्या किया जाता है और फिर बिट्स को double
में भर दिया जाता है। कॉलिंग Vector< double, 3 >(1.0, 1.0, 1.0)
वांछित परिणाम देता है। क्या ऐसा कुछ करने का कोई पसंदीदा तरीका है?
ध्यान दें कि सी ++ 11 के सार्वभौमिक प्रारंभकर्ता वाक्य रचना आप एक सुरक्षित तरीके से इस दे देंगे के लिए अवैध रूप से बुला सम्मेलन। – sbi