मुझे आश्चर्य है कि क्या ट्यूपल प्रारंभकर्ता सूची द्वारा प्रारंभ किया जा सकता है (प्रारंभिककर्ता_सूची के प्रारंभकर्ता_सूची द्वारा अधिक सटीक होना)? टपल परिभाषा को ध्यान में रखते:प्रारंभकर्ता सूची से std :: tuple प्रारंभ करना
static vertex const nullvertex = { {{0, 0, 0}},
{{0.0, 0.0}},
{{0, 0, 0, 0}},
{{0, 0, 0, 0}} };
मैं सिर्फ एक ही कार्यक्षमता मैं टपल के बजाय struct का उपयोग कर मिला हासिल करना चाहते हैं (इस प्रकार केवल सरणियों initializer_list द्वारा प्रारंभ किया गया है:
typedef std::tuple< std::array<short, 3>,
std::array<float, 2>,
std::array<unsigned char, 4>,
std::array<unsigned char, 4> > vertex;
वहाँ निम्न कार्य की किसी भी तरह से है):
static struct vertex {
std::array<short, 3> m_vertex_coords;
std::array<float, 2> m_texture_coords;
std::array<unsigned char, 4> m_color_1;
std::array<unsigned char, 4> m_color_2;
} const nullvertex = {
{{0, 0, 0}},
{{0.0, 0.0}},
{{0, 0, 0, 0}},
{{0, 0, 0, 0}}
};
कोई कारण मैं tuples का उपयोग करना चाहिए है, बस सोच रहा। मैं पूछ रहा हूं, क्योंकि मैं g ++ टेम्पलेट त्रुटियों के माध्यम से जाने में असमर्थ हूं जो इस तरह के ट्यूपल प्रारंभिकरण के मेरे प्रयास से उत्पन्न होते हैं।
@Motti: तो मैं वर्दी आरंभीकरण के लिए उचित सिंटैक्स याद किया -
static vertex const nullvertex = vertex{ {{0, 0, 0}},
{{0.0, 0.0}},
{{0, 0, 0, 0}},
{{0, 0, 0, 0}} };
और
static vertex const nullvertex{ {{0, 0, 0}},
{{0.0, 0.0}},
{{0, 0, 0, 0}},
{{0, 0, 0, 0}} };
लेकिन ऐसा लगता है कि सभी मुसीबत सरणियों, जो initializer_list के लिए कोई निर्माता मिला है और में निहित है उचित कन्स्ट्रक्टर के साथ रैपिंग सरणी इतना आसान काम नहीं लगता है।
प्रतिक्रिया के लिए धन्यवाद:
मूल रूप से है कि आप क्या करने की कोशिश कर रहे हैं कुछ इस तरह है! – erjot
ब्रेसिड इनिट सूची के साथ 'std :: tuple' का निर्माण क्यों खराब है? यह 'std :: pair's के लिए काम करता है, और 'std :: tuple'' std :: pair' का सामान्यीकरण है, इसलिए मुझे इस सीमा के कारण को समझ में नहीं आता है: एस ... – rubenvb
@ रूबेनव वर्दी प्रारंभिक (ब्रेसिज़) के साथ 'tuple' प्रारंभ करना ठीक है लेकिन ऐसा करने के लिए आपको बराबर चिह्न छोड़ना होगा। यदि आपके पास बराबर चिह्न है तो इसका मतलब है कि आप प्रारंभिक सूची को स्वीकार करने वाले पैरामीटर कन्स्ट्रक्टर के साथ एक अस्थायी बनाते हैं और फिर अस्थायी मान से कॉपी कन्स्ट्रक्टर का उपयोग करते हैं (हालांकि संकलक इनमें से कुछ को बढ़ा सकता है)। – Motti