pointhi
Erfahrenes Mitglied
Hy,
ich arbeite heute schon den ganzen Tag daran eine Dynamische 2-Dimensionale Array mittel Template zu realisieren. Es ist meines Wissen möglich, und ich habe es geschafft so eine Array zumindestens lesbar zu machen. Wenn ich aber auf die Array schreiben möchte kommt folgende Fehlermeldung:
Ich verstehe so in etwa was der L-Wert ist, weiß aber nicht wie ich den Code ändern muss damit es funktioniert.
Der Code ist von einem anderen Forum kopiert und auf Templates umgeschrieben worden
Der aktuelle Code ist das hier:
Die Kommentare sind von mir nachträglich hinzugefügt worden, dort wo ein ? steht bin ich mir nicht ganz sicher ob das genau die beschriebene Funktion ist.
In der Main-Funktion wird dementsprechend die Array erzeugt und geschrieben:
Das Auslesen Funktioniert (bekomme uninitialiserte Werte, also pseudorandom
), nur das schreiben von Werten macht probleme.
Ich hab schon eine fertige Template bassierte Dynamische Array für 1-Dimension, die funktioniert heruntergeladen. Bei dieser ist der Teil der für den Aufruf vermutlich zuständig ist so deklariert:
Bei dem mehrdimensionalen Programm dagegen so:
Ich schätze das dass & am Anfang den unterschied macht, aber im gegensatz zur 1-Dimensionalen Array wird der Typ Proxy, und nicht der von typename benutzt. Habt ihr eine Ahnung was ich machen muss damit ich auch in die Array schreiben kann?
mfg, pointhi
ich arbeite heute schon den ganzen Tag daran eine Dynamische 2-Dimensionale Array mittel Template zu realisieren. Es ist meines Wissen möglich, und ich habe es geschafft so eine Array zumindestens lesbar zu machen. Wenn ich aber auf die Array schreiben möchte kommt folgende Fehlermeldung:
Code:
Als linker Operand einer Zuweisung wird L-Wert erfordert
Ich verstehe so in etwa was der L-Wert ist, weiß aber nicht wie ich den Code ändern muss damit es funktioniert.
Der Code ist von einem anderen Forum kopiert und auf Templates umgeschrieben worden
Der aktuelle Code ist das hier:
C++:
template <typename T>
class ArrayOfArrays {
public:
ArrayOfArrays() { // Konstruktor
_arrayofarrays = new T*[10]; // Erzeuge 10x10 Array
for(int i = 0; i < 10; ++i)
_arrayofarrays[i] = new T[10];
}
class Proxy { // Hilfsklasse für die 2.Dimension
public:
Proxy(T* _array) : _array(_array) { } // Konstruktor ->?<-
T operator[](int index) { // Operator um Wert von der 2. Dimension auszugeben
return _array[index];
}
private:
T* _array; // Pointer für die Spalte
};
Proxy operator[](int index) { // Operator um Array Auszugeben und einzulesen ->?<-
return Proxy(_arrayofarrays[index]);
}
private:
T** _arrayofarrays; // Pointer für die 2D-Array
};
Die Kommentare sind von mir nachträglich hinzugefügt worden, dort wo ein ? steht bin ich mir nicht ganz sicher ob das genau die beschriebene Funktion ist.
In der Main-Funktion wird dementsprechend die Array erzeugt und geschrieben:
C++:
ArrayOfArrays<int> TestArray;
TestArray[0][0] = 200; // Testwert
TestArray[0][1] = 502;
Das Auslesen Funktioniert (bekomme uninitialiserte Werte, also pseudorandom

Ich hab schon eine fertige Template bassierte Dynamische Array für 1-Dimension, die funktioniert heruntergeladen. Bei dieser ist der Teil der für den Aufruf vermutlich zuständig ist so deklariert:
C++:
T& operator [] (unsigned int index); // get array item
Bei dem mehrdimensionalen Programm dagegen so:
C++:
Proxy operator[](int index);
Ich schätze das dass & am Anfang den unterschied macht, aber im gegensatz zur 1-Dimensionalen Array wird der Typ Proxy, und nicht der von typename benutzt. Habt ihr eine Ahnung was ich machen muss damit ich auch in die Array schreiben kann?
mfg, pointhi
Zuletzt bearbeitet von einem Moderator: