Overbelastingsbeugelbeheerders [] om

Ik heb de volgende klas:

class risc { // singleton
    protected:
        static unsigned long registers[8];
    public:
        unsigned long operator [](int i)
        {
            return registers[i];
        }
};

Zoals je kunt zien, heb ik de Square Brackets-operator geïmplementeerd voor “Getting”.
Nu zou ik het willen implementeren voor het instellen, d.w.z.: risc[1] = 2.

Hoe kan het worden gedaan?


Antwoord 1, Autoriteit 100%

Probeer dit:

class risc { // singleton
protected:
    static unsigned long registers[8];
public:
    unsigned long operator [](int i) const    {return registers[i];}
    unsigned long & operator [](int i) {return registers[i];}
};

Antwoord 2, Autoriteit 16%

U moet een referentie van uw operator[]retourneren, zodat de gebruiker van de klas het gebruikt voor het instellen van de waarde. Dus de functiesignatuur zou zijn unsigned long& operator [](int i).

Other episodes