खोज…


टिप्पणियों

एक वर्ग के 'कास्ट मेंबर फ़ंक्शंस' का वास्तव में क्या मतलब होता है। साधारण परिभाषा यह प्रतीत होती है कि, एक कास्ट सदस्य फ़ंक्शन ऑब्जेक्ट को बदल नहीं सकता है। लेकिन 'क्या नहीं बदल सकता है' यहाँ वास्तव में इसका मतलब है। इसका सीधा सा मतलब है कि आप वर्ग डेटा सदस्यों के लिए असाइनमेंट नहीं कर सकते।

हालांकि, आप अन्य अप्रत्यक्ष संचालन कर सकते हैं जैसे कि नक्शे में एक प्रविष्टि सम्मिलित करना जैसा कि उदाहरण में दिखाया गया है। इसकी अनुमति देने से ऐसा लग सकता है कि यह कांस्ट फ़ंक्शन ऑब्जेक्ट को संशोधित कर रहा है (हाँ, यह एक अर्थ में करता है), लेकिन इसकी अनुमति है।

तो, वास्तविक अर्थ यह है कि एक कास्ट सदस्य फ़ंक्शन क्लास डेटा चर के लिए असाइनमेंट नहीं कर सकता है। लेकिन यह अन्य सामान की तरह कर सकता है जैसे उदाहरण में बताया गया है।

निरंतर सदस्य कार्य

#include <iostream>
#include <map>
#include <string>

using namespace std;

class A {
public:
    map<string, string> * mapOfStrings;
public:
    A() {
        mapOfStrings = new map<string, string>();
    }

    void insertEntry(string const & key, string const & value) const {
        (*mapOfStrings)[key] = value;             // This works? Yes it does. 
        delete mapOfStrings;                      // This also works
        mapOfStrings = new map<string, string>(); // This * does * not work
    }

    void refresh() {
        delete mapOfStrings;
        mapOfStrings = new map<string, string>(); // Works as refresh is non const function
    }

    void getEntry(string const & key) const {
        cout << mapOfStrings->at(key);
    }
};

int main(int argc, char* argv[]) {

    A var;
    var.insertEntry("abc", "abcValue");
    var.getEntry("abc");
    getchar();
    return 0;
}


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow