Referenz auf vector<int<



  • Hallo,

    habe ein Problem, kann aber die Antwort nicht finden.
    Ich habe ein struct das so aussieht:

    struct Farbe
      {
          vector<int> kommunikationslinien;
      };
    

    In einem Testprogramm läuft das mit call-by-value (farbe.kommunikationslinien = einVector) so wie es soll. Um mir aber die Rumkopiererei zu sparen, möchte ich lieber ein call-by-reference machen. Aber

    ...
        vector<int>* kommunikationslinien;
    

    geht nicht.
    Kann mir einer sagen wie das geht?

    Vielen Dank
    ein C++-Newbie



  • Du hast einen Zeiger und keine Referenz, eine Referenz sieht folgendermaßen aus:

    vector<int>& komm;
    

    Wichtig ist aber, dass durch das & nicht automatisch die Variable ab jetzt überall mit Call-By-Reference übergeben wird, sondern, dass du jetzt eine Referenz hast die erst mit einer anderen Variable initialisiert werden muss.

    Du suchst eher nach soetwas:

    struct Farbe
    {
        vector<int> komm;
        ...
    }
    
    ...
    
    void foo (Farbe& farbe) // Referenz wird übernommen (Call-By-Reference)
    {
        farbe.komm.push_back(5); // Bearbeitung des Original-Objektes
    }
    
    ...
    
    Farbe myFarbe;
    foo(myFarbe); // Hier wird dann nicht mit einer Kopie sondern direkt mit myFarbe gearbeitet
    

    MfG SideWinder



  • Ah schonmal Danke,

    mit dem Pointer und der Referenz habe ich noch was Probleme.
    Werde es mal so probieren.

    Schönen Abend noch


Anmelden zum Antworten