List<List<Object^>^>^ Zugriffsmöglichkeiten
-
Hallo,
ich möchte gerne einer Liste eine weitere Liste mit einem eigenen Objekttyp zuordnen.
Also quasiListe enthält eine Liste mit Objekten und von diesen Listen mit Objekten kann ich dann mehrere in die erste Liste einfügen. (Wenn es eine bessere Alternativen als List<List gibt, wäre ich für jeden Tipp dankbar ich habe erfolglos mit vector, array, ArrayList rumversucht)
Definieren darf ich das mit
List<List<eigeneKlasse^>^>^ name= gcnew List<List<eigeneKlasse^>^>();
ohne das der Compiler motzt.
Ich habe jetzt eine Liste der eigenen Klasse
<List<eigeneKlasse^>^ unfertig = gcnew <List<eigeneKlasse^>()
Jetzt würde ich gerne diese anfügen. Ich habe das mit add versucht
name->Add(unfertig);
aber irgendwie weiß ich nicht wie ich jetzt daran komme ich habe schon ->-> probiert, aber da motzt der Compiler jetzt mal.
Jemand eine Idee
Viele Grüße
Mulan
-
Mulan81 schrieb:
Wenn es eine bessere Alternativen als List<List gibt, wäre ich für jeden Tipp dankbar
Das stimmt nicht, du bist nicht an Ratschlägen interessiert. Siehe hier
http://www.c-plusplus.net/forum/p2286753#2286753Mulan81 schrieb:
aber irgendwie weiß ich nicht wie ich jetzt daran komme ich habe schon ->-> probiert, aber da motzt der Compiler jetzt mal.
An Elemente einer einfachen Liste kommst du auch nicht mit ->, warum sollte dann ->-> mit einer Liste in einer Liste funktionieren ?
Was du meinst, ist wahrscheinlich sowas
#include "stdafx.h" using namespace System; using namespace System::Collections::Generic; public ref class Foo { public: int Bar() { return 42; } }; typedef List<Foo^> FooList; typedef List<FooList^> FooFooList; int main(array<System::String ^> ^args) { FooList^ f = gcnew FooList; FooFooList^ ff = gcnew FooFooList; f->Add(gcnew Foo); ff->Add(f); // Erstes Element der einfachen Liste int n1 = f[0]->Bar(); // Erste Liste und davon das erste Element int n2 = ff[0][0]->Bar(); return 0; }
oder das Ganze mit vector
#include "stdafx.h" #include <cliext/vector> using namespace System; using namespace cliext; public ref class Foo { public: int Bar() { return 42; } }; typedef vector<Foo^> FooVec; typedef vector<FooVec> FooFooVec; int main(array<System::String ^> ^args) { FooVec f; FooFooVec ff; f.push_back(gcnew Foo); ff.push_back(f); int n1 = f[0]->Bar(); int n2 = ff[0][0]->Bar(); return 0; }
-
Und falls Du das noch nicht gelesen haben solltest:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/