Mehrere Objekte in einem Array zusammenfassen?



  • Hi, mein Hauptproblem ist simpel. Ich habe keine Ahnung^^.

    Aber folgendes: Ich arbeite mit Omnet++ und komme leider doch nicht umhin, manche Funktionen etwas anzupassen. Daher muss ich leider mit einer Anfängerfrage kommen:

    Gemäß Manual, habe ich z.B. folgende Zeilen

    cTopology::LinkOut *path0 = tempnode->getPath(0);
    [...]
    cTopology::LinkOut *path1 = tempnode->getPath(0);
    

    Das Funktioniert soweit auch, was ich schon für ein Wunder halte^^

    Ich möchte jetzt path0, path1 usw. "zusammenfassen", so dass ich die mit path[Pfadnummer] ansprechen kann. Nur stell ich mich dazu zu doof an, was daran liegt, dass ich das ganze mit Klassen/Objekten/Zeigern. nicht verstanden habe.

    Meine "Versuch" sieht bisher wie folgt aus:

    cTopology::LinkOut *path = new  cTopology::LinkOut[10]();
    
    path[0] = tempnode->getPath(0);
    

    Ihr "seht" es bestimmt schon, das funktioniert so nicht.

    Daher meine Frage: Wie wird das korrekt gemacht?


  • Mod

    #include <vector>
    
    // ...
    
    std::vector<cTopology::LinkOut*> paths;
    paths.push_back(tempnode->getPath(0));  // paths[0] ist nun das Ergebnis von tempnode->getPath(0)
    // ...
    paths.push_back(tempnode->getPath(0));  // paths[1] ist das Ergebnis des erneuten tempnode->getPath(0)
    


  • nimm std::vector aus der STL, das erspart dir viel Ärger.



  • Korrekt wird es so gemacht. Aber wenn ich mir deine Codezeilen so anschaue, ahne ich böses, da müsste man wohl viel weiter vorne ansetzen, um sauberen C++ Code zu erhalten. 🙂 Dennoch, versuch es mal so:

    std::vector<cTopology::LinkOut*> paths;
    paths.push_back( tempnode->getPath(0) );
    paths.push_back( tempnode->getPath(1) );
    paths[0];
    paths[1];
    


  • out schrieb:

    Korrekt wird es so gemacht. Aber wenn ich mir deine Codezeilen so anschaue, ahne ich böses

    Da Ahnst zu ziemlich sicher ziemlich richtig^^

    Aber Danke an alle, ich denke damit kann ich was Anfangen. Wenn nicht, meld ich mich nochmal 😃


Log in to reply