Array von Pointern in einer Klasse
-
Hallo,
ich bastelte heute vergnügt an meinem Projekt rum, als ich plötzlich von meinem Compiler in die bittere Realität zurück geholt wurde.
Ich will in einer Klasse ein Array von Pointern haben. Das Problem ist, dass das Array eine Größte hat, die erst zur Laufzeit berechnet wird.
Ich wollte daher in der Header-Dateiclass CMenu { private: CIrgendwasAnderes *pArray [g_iArraySize]; //... };
schreiben. Allerdings wird bei *pArray [g_iArraySize] gemeckert, dass das kein konstanter Ausdruck sei. Das stimmt ja auch. Nun habe ich
class CMenu { private: CIrgendwasAnderes **pArray; //... };
geschrieben und wollte in einer Init-Methode (nicht der Konstruktor) die Array-Größe festlegen. Leider weiß ich nicht wie :(.
Ich hab's mit *pArray = new CIrgendwasAnderes [g_iArraySize]; versucht, aber das funktioniert nicht. Später wollte ich dann mitfor (i = 0; i < g_iArraySize; i++) { pArray [i] = new CIrgendwasAnderes; if (pArray [i] == NULL) return false; pArray [i]->Init (); }
die Elemente des Arrays initialisieren.
Für Hilfe wäre ich dankbar.MfG plusman
-
Einfach folgenden member deklarieren (der header #include <vector> notwendig):
std::vector<CIrgendwasAnderes *> pArray;
Dann kannst du im Konstruktor die Größe angeben:
CMenu::CMenu() : pArray(g_iArraySize) { }
Wenn sich die Größe irgendwann ändert: Einfach ein
pArray.resize(neueGroesse);
-
Ich kann von hier keinen richtigen Fehler entdecken, aber hast du das so?!
#include <iostream> using namespace std; int main() { int** ppIntArr,i; ppIntArr=new int*[20]; for(i=0;i<20;i++) { ppIntArr[i]=new int; *ppIntArr[i]=i; } for(i=0;i<20;i++) { cout << *ppIntArr[i] << " "; } for(i=0;i<20;i++) { delete ppIntArr[i]; } delete[] ppIntArr; cin >> i; return 0; }