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.