Ich bin ein Anfänger in C++, der lernt, überladene Operationen zu verwenden. In meinem Hauptprogramm habe ich diesen Code:Fehler: Zuweisung der schreibgeschützten Position 'arr2.IntArray :: operator [] (1)' arr2 [1] = 24;
IntArray arr2(3)
arr2[1] = 24;
In meinem Kopf, ich habe diesen Code
class IntArray {
char *elt;
int size
public:
const int& operator[] (int i);
In meinem CPP, habe ich diesen Konstruktor:
/* one-integer constructor */
IntArray::IntArray(int sz) {
elt = new char[sz];
for (int i = 0; i<sz; i++)
elt[i] = 0;
size = sz;
}
und diese Index-Operator
/* Index operator */
const int& IntArray::operator[] (int i) {
if (i < 0) {
cout << "warning: value out of bounds" <<endl;
return elt[0];
}
else if (i > size) {
cout << "warning: value out of bounds" <<endl;
return elt[size];
}
else
return elt[i];
}
ich erhalte diese err oder wenn ich versuche, den Wert 24 auf eine indizierte Position im Array
error: assignment of read-only location ‘arr2.IntArray::operator’ arr2[1] = 24;
etwas zuweisen mache ich falsch?
sicher, aber dann bekomme ich diesen Fehler: Fehler: ungültige Initialisierung von nicht-const Referenz des Typs 'int &' von einem rvalue des Typs 'int' return elt [0]; – flowpoint
@flowpoint Was ist 'elt'? Bitte fügen Sie die Frage hinzu. – Barry
siehe aktualisierten Beitrag – flowpoint