संभवतः नहीं।क्या एक पॉइंटर वैकल्पिक रूप से एक कॉन्स खाली कक्षा या गैर-कॉन्स क्लास को इंगित कर सकता है?
मैं दो वर्गों एक & बी
class A
{
B *b_;
};
class B
{
public:
B(): b_string_("") {};
private:
std::string b_string_;
};
मैं हमेशा के लिए b_ चाहते एक बी वस्तु को इंगित किया है: यहाँ मेरी उपयोग है। मैं b_ को nullptr के बजाय "खाली" बी ऑब्जेक्ट को इंगित करना चाहता हूं ताकि मैं खाली बी _-> b_string प्राप्त करने के लिए हमेशा परिभाषित तरीके से * b_ को अव्यवस्थित कर सकूं। तो मैंने सोचा कि मैं एक वैश्विक "नल बी ऑब्जेक्ट" बनाउंगा: const B null_b
। लेकिन मैं इस स्वामित्व का उपयोग नहीं कर सकता (स्वाभाविक रूप से):
A(): b_(&null_b) {};
क्योंकि b_ किसी कॉन्स्ट चर को इंगित नहीं कर सकता है। यदि "नल बी ऑब्जेक्ट" नहीं है, तो बी_ को म्यूटेबल बी ऑब्जेक्ट्स को इंगित करने की आवश्यकता है।
वैश्विक गैर-कॉन्स समस्या को हल करता है लेकिन मुझे कॉन्स की सुरक्षा चाहिए ताकि मैं "शून्य ऑब्जेक्ट" कभी भी परिवर्तन न कर सकूं।
एफडब्ल्यूआईडब्ल्यू, इसमें एक बड़ी परियोजना शामिल है जहां बी_ किसी अन्य वर्ग में बी ऑब्जेक्ट्स के वेक्टर को इंगित कर रहा है। मैं उस वेक्टर में एक खाली बी ऑब्जेक्ट जोड़ सकता था लेकिन यह मुझे क्लूडी के रूप में मारता है।
क्या मेरी समस्या का समाधान करने के लिए कोई तरीका या पैटर्न है?
मुझे शायद यह सुझाव नहीं देना चाहिए ... const_cast? – Borgleader
क्या आप फ्लाईवेट की तलाश में हैं? लेकिन, ध्यान रखें कि सभी पॉइंटर्स तार्किक रूप से – sehe
@ बॉर्गलीडर होंगे जो इससे यहां कैसे मदद करेंगे? आप रनटाइम पर पॉइंटर को कॉन्स्टेबल करने का निर्णय नहीं ले सकते हैं (यदि यह आपके नील ऑब्जेक्ट को इंगित करता है) – sehe