जब मैं सी ++ में स्थिर चर का उपयोग करता हूं, तो मैं अक्सर अपने कन्स्ट्रक्टर को दूसरे स्थानांतरित करने वाले एक चर को प्रारंभ करना चाहता हूं। दूसरे शब्दों में, मैं स्थिर उदाहरण बनाना चाहता हूं जो एक दूसरे पर निर्भर करते हैं।सी ++ स्थैतिक प्रारंभिकरण आदेश
एक .cpp या .h फ़ाइल में यह कोई समस्या नहीं है: उदाहरण घोषित किए जाने वाले क्रम में बनाए जाएंगे। हालांकि, जब आप किसी अन्य संकलन इकाई में किसी उदाहरण के साथ एक स्थिर उदाहरण प्रारंभ करना चाहते हैं, तो ऑर्डर निर्दिष्ट करना असंभव प्रतीत होता है। नतीजा यह है कि, मौसम के आधार पर, ऐसा हो सकता है कि एक दूसरे पर निर्भर उदाहरण बनाया गया है, और इसके बाद ही अन्य उदाहरण का निर्माण किया गया है। नतीजा यह है कि पहला उदाहरण गलत तरीके से शुरू किया गया है।
क्या कोई यह जानता है कि स्थिर ऑब्जेक्ट सही क्रम में बनाए गए हैं या नहीं? मैंने समाधान के लिए लंबे समय से खोज की है, उन सभी को कोशिश कर रहा है (श्वार्ज़ काउंटर समाधान सहित), लेकिन मुझे संदेह है कि वास्तव में काम करता है।
Type& globalObject()
{
static Type theOneAndOnlyInstance;
return theOneAndOnlyInstance;
}
दरअसल, इस काम करता है:
एक संभावना यह स्थिर समारोह के सदस्य के साथ चाल है। अफसोस की बात है, आपको GlobalObject()। GlobalFbction() के बजाय globalObject() सदस्य फ़ंक्शन() लिखना है, जिसके परिणामस्वरूप कुछ भ्रमित और सुरुचिपूर्ण क्लाइंट कोड होता है।
अद्यतन: आपकी प्रतिक्रियाओं के लिए धन्यवाद। अफसोस की बात है, ऐसा लगता है कि मैंने अपने स्वयं के प्रश्न का उत्तर दिया है। मुझे लगता है मुझे इसके साथ रहने के लिए सीखना होगा ...
_The उदाहरणों क्रम में वे are_ में बनाया जाएगा ** परिभाषित ** –