मेरे पास फ़ंक्शन है जो तर्क के रूप में संदर्भ संदर्भ स्वीकार करता है। इसे तर्क नहीं बदलना चाहिए, लेकिन यह करता है (परिवर्तनीय "_isVertex")। इसे कैसे सुधारा जा सकता है? यहां कोड है:फ़ंक्शन में कॉन्स ऑब्जेक्ट
#include <vector>
#include <iostream>
using namespace std;
class Element
{
public:
bool isVertex() const
{ return _isVertex; };
private:
bool _isVertex = true;
};
class ElementContainer : public vector <Element>
{
public:
void push(const Element &t)
{
// here everything is fine
cerr << t.isVertex() << ' ';
push_back(t);
// and here _isVertex is false, should be true!
cerr << t.isVertex() << '\n';
}
};
int main()
{
ElementContainer vertex;
vertex.push({});
vertex.push(vertex[0]);
}
प्लस वन: आपको मिल गया है। ध्यान दें कि सी ++ मानक लाइब्रेरी कंटेनर बेस क्लास के लिए डिज़ाइन नहीं किए गए हैं। फ़ंक्शन घोषणा के अंत में – Bathsheba
'const' केवल गारंटी देता है कि फ़ंक्शन को कॉल करने के परिणामस्वरूप कक्षा की स्थिति नहीं बदलेगी। लौटाया गया मूल्य स्थिर नहीं है, और तथ्य के बाद बदला जा सकता है। –