C++ array-operator überladen
Ich bin momentan dabei, ein Haufen, wie diese:
struct Heap{
int H[100];
int operator [] (int i){return H[i];}
//...
};
Wenn ich versuche zu drucken Elemente von es ich wie das tun:
Heap h;
//add some elements...
printf("%d\n", h[3]); //instead of h.H[3]
Meine Frage ist, wenn statt den Zugriff auf ich möchte, um Sie auf, wie diese:
for(int i = 0; i < 10; i++) h[i] = i;
Wie kann ich tun? Ich kann nicht einfach tun, wie ich es Tat...
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es idiomatisch zu bieten paar überladungen der
operator[]
Funktion - one fürconst
Objekte und einen für nicht-const
Objekte. Der Rückgabetyp derconst
member-Funktion kann einconst&
oder einfach nur ein Wert, abhängig von dem Objekt, das zurückgegeben wird, während der Rückgabetyp der nicht-const
member-Funktion ist in der Regel eine Referenz.Diese können Sie ändern ein nicht -
const
- Objekt mit dem array-operator.während immer noch so dass Sie Zugriff auf
const
Objekte.Können Sie die Referenzen zurückgeben, was festgelegt werden sollte. Hinzufügen
&
zur Rückkehr geben.Sollten Sie die Rückgabe durch Referenz. Mit der aktuellen version, die Sie einnehmen einer Kopie und Bearbeiten der Kopie, die keine Auswirkung auf das Originale array. Sie haben Ihren Anbieter wechseln überlastung zu diesem: