operator[] in Klasse benutzen



  • Guten Abend,

    ich habe eine Kleine Klasse erstellt, die den [] operator überladen hat. Diesen Operator möchte ich in der Klasse benutzen. Wie ist das möglich?

    Die Klasse:

    class restaurant {
            public:
                string ausg_gruppe();
            private:
                int operator[]( int pos);
                vector<int> gruppe;
                vector<int> verteilung;
    
                int anzahl_sitzplaetze;
                int gruppe_aktuell;
                int runden( double wert);
    };
    

    Die Funktion:

    string restaurant::ausg_gruppe() {
        int nr=1;
        string buffer;
        for( int i=0; i<anzahl_sitzplaetze; ++i) {
            if( operator[](i) != 0) {
                if( operator[](i) != operator[](i-1))
                    nr++;
    
                if( nr < 10)
                    buffer.push_back(nr + 48);
                else
                    buffer.push_back(nr + 55);
            } else
                buffer.push_back(48);
        }
    
    // Falls die letzt Gruppe die erste ist
        if( gruppe[anzahl_sitzplaetze-1] == gruppe[0]) {
            for( int i=anzahl_sitzplaetze-1; i>=0; --i){
                if(gruppe[i] == gruppe[0]) {
                    buffer[i] = buffer[0];
                }
            }
        }
        return buffer;
    }
    

    Es funktioniert auf jedenfall mit operator[](pos). ist es auch in einer schickeren schreibweiße möglich?



  • Zeig halt mal deine Überladung her.
    Edit:
    Oder meinst du das hier?

    if( operator[](i) != operator[](i-1))
    


  • (*this)[i]
    

    aber ob das hübscher ist (ich nie verstanden habe, warum this ein zeiger ist)?



  • Danke für die schnelle Antwort. Du hast aber recht, hübscher ist diese Variante auch nicht

    Hier ist meine überladene Funktion

    int restaurant::operator[](int pos_arg) {
        int pos = pos_arg%anzahl_sitzplaetze;
    
        return gruppe[pos];
    }
    


  • Irgendwie kann ich mir kein Restaurant mit op[] vorstellen. 😮
    Damit fällt das Problem evtl eh von alleine Weg, wenn eine Klasse nur eine Bedeutung füllt.



  • Ich muss volkard zustimmen. Allgemein finde ich deine Überladung des Index-Operators merkwürdig.



  • Schliesse mich an.
    operator [] private überladen ist mehr als seltsam.


Anmelden zum Antworten