Array mit eigener Klasse



  • Guten Morgen,

    Ich habe eine eigene Klasse, die ich via DLL bekomme und brauche davon aber nun mehrere Instanzen.. wieviel weiß ich erst zur Laufzeit.. mein Ansatz war also..

    d3plotReader* thed3plotReader[];
    for(int readerNr=1;readerNr<=countSimulations;readerNr++)
      thed3plotReader->Add( new d3plotReader(filename));
    

    was aber mit einer NullPointer-Exception quittiert wird - muß ich für das Array vorher doch noch irgendwie speicher allocieren, ich dachte, daß hat sich dur "->Add()" erledigt und wir allein getan? Wenn doch - wie?

    System::Array<d3plotReader*>* thed3plotReader = __gc new System::Array<d3plotReader*>(countSimulations);
    

    liefert mir einen Syntaxfehler...

    error C2143: syntax error : missing ';' before '<'

    Wie lautet es korrekt?

    Benutze Visual Studio 2003 mit Visual C++ und .NET

    Vielen Dank,
    Hackbard_C



  • Hi,
    selbstverständlich musst du das Array auch auf den Heap legen!

    bei der Syntax von .Net 2003 kann ich Dir leider nicht helfen...

    System::Array<d3plotReader*>* thed3plotReader = __gc new System::Array<d3plotReader*>(countSimulations);



  • Weiß sonst noch hier wer Rat, wie ich das umsetzen kann?

    Irgendwie scheint mein C++ den Generics-Ansatz (sprich die spitzen Klammern) allgemein nicht zu mögen... muß ich noch irgendeine Option bei der 2003er-Version einstellen, damit ich es nutzen kann?



  • Oft deutet ein solcher Fehler auf einen unbekannten Typ hin. Gibt es noch mehr Meldungen ?

    Eventuell liegt es aber auch schlichtweg daran, das System::Array keinen templateparameter entgegen nimmt.

    Schau Dir mal System.Collections.Generic.List<T> an.



  • Hat sich erledigt... konnte auf Visual Studio 2005 umsteigen und dort funktioniert

    array<d3plotReader^,1>^ thed3plotReader = gcnew array<d3plotReader^,1>(countSimulations);
    

    ohne Probleme 🙂

    Trotzdem danke für die Hilfe!



  • Das wird auch im 2003er gehen.

    Das eine ist cli::array , das andere System::Array


Anmelden zum Antworten