"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > C++0x में इनिशियलाइज़र सूचियों के साथ सदस्य सारणियों को कैसे आरंभ करें?

C++0x में इनिशियलाइज़र सूचियों के साथ सदस्य सारणियों को कैसे आरंभ करें?

2024-11-08 को प्रकाशित
ब्राउज़ करें:574

How to Initialize Member Arrays with Initializer Lists in C  0x?

इनिशियलाइज़र सूचियों के साथ सदस्य ऐरे को प्रारंभ करना

C 0x में, किसी इनिशियलाइज़र सूची के साथ सदस्य ऐरे को आरंभ करने का प्रयास करते समय आपको "असाइनमेंट में असंगत प्रकार" त्रुटि का सामना करना पड़ सकता है .

इसे हल करने के लिए, एक विविध टेम्पलेट कंस्ट्रक्टर का उपयोग करने पर विचार करें इसके बजाय:

struct foo {
    int x[2];
    template 
    foo(T... ts) : x{ts...} {}
};

int main() {
    // Usage
    foo f1(1, 2);   // OK
    foo f2{1, 2};   // Also OK
    foo f3(42);    // OK; x[1] zero-initialized
    foo f4(1, 2, 3); // Error: too many initializers
    foo f5(3.14);  // Error: narrowing conversion not allowed
    foo f6("foo"); // Error: no conversion from const char* to int
}

यदि 'const' स्थिति को संरक्षित करना आवश्यक नहीं है, तो आप वैकल्पिक रूप से सरणी मान लोड करने के लिए एक फ़ंक्शन नियोजित कर सकते हैं:

struct foo {
    int x[2];
    foo(std::initializer_list il) {
        std::copy(il.begin(), il.end(), x);
    }
};

हालाँकि, यह दृष्टिकोण संकलन-समय सीमा जाँच को छोड़ देता है।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3