अपने वर्तमान संकलक अभी तक सी ++ 11 का समर्थन नहीं करता है, तो आप को प्रारंभ कर सकते हैं
class sig
{
public:
sig()
{
struct Functor
{
Functor() : value(0) {};
int operator()() { return value++; };
int value;
};
std::generate(p_list, p_list + 4, Functor());
}
int p_list[4];
};
पिछला स्निपेट उदाहरण here: मानक एल्गोरिदम और functors का उपयोग कर वेक्टर सामग्री।
हां, बदसूरत है (कम से कम, यह मेरे लिए बदसूरत लग रहा है) और संकलन समय पर काम नहीं करता है; लेकिन यह वह काम करता है जिसे आपको कन्स्ट्रक्टर में चाहिए।
यदि आपको किसी अन्य प्रकार की प्रारंभिक आवश्यकता है (यहां तक कि विषम संख्याओं के साथ प्रारंभिकरण, यादृच्छिक मूल्यों के साथ प्रारंभिकरण, एनोटर मान से शुरू करें, आदि ...) आपको केवल फ़ंक्शन को बदलने की आवश्यकता है, और यह एकमात्र लाभ है यह बदसूरत दृष्टिकोण।
स्रोत
2012-09-13 12:29:09
-std का उपयोग कर इस का उपयोग करते हुए C++ 11 संकलक जैसी सरणी सदस्यों आरंभ कर सकते हैं मैं सी ++ 10 की है। तो मुझे इसे कठिन तरीके से करना पड़ा। आपके सभी जवाबों के लिए शुक्रिया। –
एसआईजी() है: कन्स्ट्रक्टर घोषित करना? यह उत्तर शुरुआती लोगों के लिए अधिक उपयोगी होगा यदि यह प्रश्न के बुनियादी लेआउट से मेल खाता है, तो हम देख सकते हैं कि कन्स्ट्रक्टर कैसे काम करता है। खाली '{}' क्या है? – GreenAsJade
और शुरुआती के बाद ''' क्यों नहीं है? – GreenAsJade