Hier sind wir wieder einmal gute Leute im Internet.Eine Variable scheint den Zugriff aufzuheben, wenn ich sie in einem dynamischen Array (C++) verwende.
Dies ist der Code Ich verwende:
//This is what is in the header file
int *myArr[]; // A two-dimensional array representing holding the matrix data
//This is what is in the definition file
Matrix::Matrix(int n, int m)
{
myRows = n;
myColumns = m;
initialize();
}
void Matrix::initialize()
{
*myArr = new int[myRows];
for (int i=0; i < 3; i++)//Only set to 3 since myRows is acting crazy
{
myArr[i] = new int[myColumns];
}
}
Aus irgendeinem Grund, wenn ich myRows Variable verwenden, um die myArr Array zu erstellen, scheint es nur um den Wert zu stoppen verweisen sie auf, bevor zeigt wurde.
Zum Beispiel gebe ich ihm den Wert 3 und nachdem der * myArr = new int [myRows] ausgeführt wurde ändert es den Wert von myRows zu 9834496, was ich nicht verstehe.
Stimmt die "neue" Variable oder etwas davon ab? Oder mache ich etwas falsch?
Oh, und da dies ein Schulpraxisprojekt ist (also werde ich dich nicht beschuldigen, wenn du nicht antwortest), würde ich eine Antwort lieber über Arbeitscode bevorzugen, damit ich wissen könnte, was ich falsch für zukünftige Projekte gemacht habe.
Also ist die myArr-Variable ein Array von int *? – ThePragmatist
Der einfache, schwierig zu stopfende Ansatz besteht darin, einen Vektor von Vektoren zu verwenden. Es ist immer noch ein bisschen hässlich, aber viel, viel besser. –
Wie ich verstehe, ist myArr ein Zeiger von Zeigern. Aber ich könnte falsch liegen. – Siemsen