Arrays von Pointer dynamisch erzeugen
-
Hi Leuts, ich hab ein Problem mit dem dynamischen Erzeugen von Pointerarrays deren Größe erst zur Laufzeit feststeht.
Bisher benutze ich folgenden Code, der auch einwandfrei funktioniert:void MyClass::ExportGridToXml(wxString strFile) { TiXmlDocument doc; int n = m_grid1->GetNumberRows(); TiXmlElement *XmlMainNode; TiXmlElement* DataSet[40]; TiXmlElement* Data[40][5]; TiXmlText* XmlTxt[40][5]; int i,j; wxString str; TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" ); XmlMainNode = new TiXmlElement("Batterieladeprotokoll"); for (i=0;i<n;i++) { Data[i][0] = new TiXmlElement("A"); Data[i][1] = new TiXmlElement("B"); Data[i][2] = new TiXmlElement("C"); Data[i][3] = new TiXmlElement("D"); Data[i][4] = new TiXmlElement("E"); for (j=0;j<5;j++) { str = m_grid1->GetCellValue(i,j); XmlTxt[i][j+1] = new TiXmlText(str); Data[i][j+1]->LinkEndChild(XmlTxt[i][j+1]); DataSet[i]->LinkEndChild(Data[i][j+1]); } XmlMainNode->LinkEndChild(DataSet[i]); } doc.LinkEndChild( decl ); doc.LinkEndChild(XmlMainNode); doc.SaveFile(strFile); }Nun habe ich das Problem, das die 40 sich ändert, d.h. die Arraygröße ändert sich zur Laufzeit. Den Ausdruck
TiXmlElement* DataSet[40];durch
TiXmlElement**DataSet = new TiXmlElement*[n];kriege ich ja noch gebacken. Problematischer wirds bei den Variablen Data und XmlText, obwohl die 5 konstant bleibt. Kann mir jemand helfen ? Danke....
-
Ganz einfach: Nimm std::vector. Alle Probleme gelöst.
-
Habe ich noch nie benutzt
Aber hört sich interessant an, mal ein wenig einlesen
-
Anyway, eine Lösung habe ich, ich Blödfön

Da die Strukturen ja direkt verlinkt werden, kann ich die Zeiger nach dem Verlinken direkt mit neuen Strukturen überschreiben :-))) Wieso also die ganzen Arrays überhaupt ? Geht mit einfachen Pointern viel einfacher......
Trotzdem Danke für den Hinweis .........