List<List<Object^>^>^ Zugriffsmöglichkeiten



  • Hallo,

    ich möchte gerne einer Liste eine weitere Liste mit einem eigenen Objekttyp zuordnen.
    Also quasi

    Liste 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#2286753

    Mulan81 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;
    }
    



Anmelden zum Antworten