Vectorinhalt verändern



  • Hallo erstmal!

    Folgende Situation:

    [code="cpp"]
    class A
    {

    private:
    B * bObjekt = new B;
    void arbeiten();

    }

    class B
    {

    public:
    std::vector<C> bVec;

    }

    class C
    {

    public:
    void setEigenschaft(QString s);
    void setNummer(int i);

    }

    void A:arbeiten(int nr)
    {
    // einiges wo auch QString str herkommt
    while(nr + 1 < bVec.size())
    {
    C tmp.setNummer(nr);
    bObjekt->bVec.push_back(tmp);
    }
    bObjekt->bVec.at(nr).setEigenschaft(str);
    return;
    }
    [/code]

    Vielleicht hätte man es auch einfacher darstellen können, aber ich will auch nicht zu viel weglassen...
    arbeiten soll jetzt sicherstellen, dass bVec mindestens nr + 1 Elemente hat um dann dem Element nr einen String zuweisen zu können.
    Das funktioniert auch wunderbar, solange ich die Funktion nicht mehrfach aufrufe. Da ich das aber mit ansteigenden nr mache, ist nur beim letzen Element der String vorhanden.
    Bei den anderern verschwindet er in der Fett gedruckten Zeile.
    Ich habe recherchiert, das ich den vector "by reference" aufrufen soll, habe allerdings keine Ahnung, wie ich das in meinem Fall machen soll.

    Schon mal danke für jede Hilfe 🙂 .


  • Mod

    setEigenschaft wird ausserhalb der Schleife aufgerufen, daher ist es nur bei einem Element gesetzt...


Anmelden zum Antworten