से अमान्य रूपांतरण मैं कक्षा के निर्माता को किसी अन्य वर्ग के किसी ऑब्जेक्ट में एक पॉइंटर के माध्यम से स्टोर करना चाहता हूं। ऐसा करने का सही तरीका क्या है?'कॉन्स्ट टाइप *' से 'टाइप *'
यदि मैं MyClass1* ptr
को const MyClass1* ptr
के साथ प्रतिस्थापित करता हूं तो कोई त्रुटि नहीं है, लेकिन इस मामले में मुझे लगता है कि मैं अब ptr
नहीं बदल सकता। मुझे क्या हासिल करने का सही तरीका क्या है?
example.cpp
class MyClass1{
public:
int a;
int b;
};
class MyClass2{
MyClass1* ptr;
public:
MyClass2(const MyClass1& obj){ptr = &obj;};
};
int main(int argc, char* argv[]){
MyClass1 object1;
object1.a = object1.b = 0;
MyClass2 object2(object1);
return 0;
}
यह g++ -o example example.cpp
के माध्यम से संकलित मुझे इस त्रुटि
example.cpp: In constructor ‘MyClass2::MyClass2(const MyClass1&)’:
example.cpp:10:37: error: invalid conversion from ‘const MyClass1*’ to ‘MyClass1*’ [-fpermissive]
MyClass2(const MyClass1& obj){ptr = &obj;};
संभावित डुप्लिकेट [कॉन्स int \ *, const int \ * const, और int const \ *?] के बीच क्या अंतर है (http://stackoverflow.com/questions/1143262/what-is-the-difference -बेटवीन-कॉन्स-इंट-कॉन्स्ट-इंट-कॉन्स्ट-एंड-इंट-कॉन्स्ट) –
आप अपने 'obj' तर्क के' कॉन्स्ट 'संशोधक को क्यों नहीं हटाते? इसके अलावा आप संदर्भ के बजाय सीधे पॉइंटर पास कर सकते हैं। – aslg
@aslg: क्योंकि मैं नहीं चाहता कि निर्माता वस्तु को संशोधित कर सके। (मुझे पता है कि उस वस्तु को वास्तविक रूप से संशोधित करने वाला कुछ भी नहीं है) – giusva