[C++] Speicherreservierung für ein 2 dememsionales Arry

Bumbbleman

Erfahrenes Mitglied
Hallo zusammen.
Ich habe ein Problem beim Speicher reservieren für ein 2 demensionales Arry.
Ich versuche es wie folgt:
C++:
	int MAX = 0;
	char * var;
	//......MAX wird ermittelt(beispielsweise aus einer Datei lesen
  try
  {
	var = new char[MAX][20];
  {
  catch( bad_alloc & e)
  {
  }
           //Hier macht man dann etwas mit der Variable

delete[] var;
Aber da wird mir dieser Fehler ausgegeben:
C++:
error C2440: '=': 'char (*)[20]' kann nicht in 'char *' konvertiert werden
Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

Was mach ich falsch?
Ich hoffe ihr könnt mir helfen.

mfg
 
Moin,

wie die Fehlermeldung schon besagt, passen Deine Typen nicht zueinander!
Wenn Du ein zweidimensionales Array benötigst, dann musst Du es auch zuvor deklarieren!
Du hast aber ein eindimensionales Feld deklariert ... ;-]

Gruß
Klaus
 
C++:
int main()
{
	int MAX = 10;	//Testweise auf 10 gesezt. (den default-Wert an dieser Stelle lieber nicht null!)
	char *var;		//Zeiger auf character
    
    var = new char[MAX,20];
 
    //Hier macht man dann etwas mit der Variable
 
delete[] var;
return 0;
}

Hi, versuch mal das hier. Müsste so funktionieren. Hab jedoch nicht getestet (aber kompiliren lässts sich;))

MfG Marschal
 
Zuletzt bearbeitet von einem Moderator:
Hi.
Hi, versuch mal das hier. Müsste so funktionieren. Hab jedoch nicht getestet (aber kompiliren lässts sich;))
... falsch ist es aber trotzdem. Du legst dort (dynamisch) ein ein-dimensionales Array mit 20 Elementen an.
C++:
char** a2 = new char*[20];
for (int i = 0; i < 20; ++i) {
  a2[i] = new char[50];
}
...

for (int i = 0; i < 20; ++i) {
  delete[] a2[i];
}
delete[] a2;
Gruß
 
Zurück