मेरे पास इस तरह का एक टेम्प्लेट क्लास है:टेम्पलेट में const_cast। क्या कोई असंगत संशोधक है?
template<T>
class MyClass
{
T* data;
}
कभी-कभी, मैं निम्न प्रकार के निरंतर प्रकार टी के साथ कक्षा का उपयोग करना चाहता हूं:
MyClass<const MyObject> mci;
लेकिन मैं const_cast<MyObject*>data
का उपयोग कर डेटा को संशोधित करना चाहता हूं (यह यह महत्वपूर्ण नहीं है कि क्यों MyClass
एक संदर्भ गणना स्मार्ट पॉइंटर क्लास है जो संदर्भ डेटा को संदर्भ में रखता है। MyObject
कुछ प्रकार से प्राप्त होता है जिसमें गिनती होती है। डेटा को संशोधित नहीं किया जाना चाहिए, लेकिन गिनती स्मार्ट द्वारा संशोधित की जानी चाहिए सूचक।)।
T
से कॉन्स्ट-नेस को निकालने का कोई तरीका है? काल्पनिक कोड:
const_cast<unconst T>(data)
?
यह समझाने के लिए धन्यवाद कि remove_const मेरे लिए कैसे काम करता है। – danatel
@ डानाटेल: आप वास्तव में remove_const का उपयोग नहीं करना चाहते हैं।दूरसंचार को कास्ट करके एक कॉन्स वैल्यू को संशोधित करना अनिर्धारित व्यवहार है। आप refcount चर पर __mutable__ का उपयोग करना चाहते हैं। –
:-) मैं म्यूटेबल का उपयोग करता हूं। मैं अपने समस्या का समाधान की जरूरत नहीं किया, समस्या नहीं थी सिर्फ एक उदाहरण के रूप में (कृपया मूल पोस्ट पढ़ें) - मैं उत्सुक था अगर वहाँ constantness दूर करने के लिए एक तरीका है। – danatel