द्वारा गुजरने वाले निम्नलिखित प्रोग्राम में पॉइंटर्स के वेक्टर के शरीर कोसिस्ट। अंक एक्स, वाई, जेड निर्देशांक और एक बिंदु_आईडी की एक संरचना है। मेरा मानना है कि शरीर को कॉन्स संदर्भ द्वारा पारित किया गया है, निम्नलिखित चरण में एक त्रुटि उत्पन्न होनी चाहिए। कार्यक्रम बिना किसी समस्या के चल रहा है। क्या आप कृपया मुझे समझा सकते हैं कि यह क्यों है।सी ++ कॉन्स संदर्भ
void readOutFile(const Body& body, int n){
....
body.bp[0]->points.push_back(Point_id(p,i));
}
'बॉडी 'को' कॉन्स्ट 'के रूप में पारित किया गया है लेकिन कंपाइलर को यह जानने का कोई तरीका नहीं है कि' body.bp [0] -> अंक' भी 'const' होना चाहिए। – wroniasty
यह ठीक चलाएगा और कॉन्स्ट त्रुटि एक संकलित समय त्रुटि होगी, रन टाइम त्रुटि नहीं। –
सी ++ में, कॉन्स उथला है, गहरा नहीं है। तो यह वस्तु को प्रभावित करता है लेकिन इसके संघ नहीं। इसका मतलब है कि आप केवल कॉन्स्ट विधियों को कॉल कर सकते हैं। लेकिन कॉन्स विधियां अन्य ऑब्जेक्ट्स को बदल सकती हैं, हमेशा इंटरफ़ेस में विधियों का उपयोग करती हैं, और गहरी कॉन्स की जांच के लिए एक अच्छा लिंट टूल का उपयोग करती हैं। –