Vordefinierte <vector>-Klasse Wert an bestimmter Stelle



  • Hallo zusammen,
    ich muss für ein Matheprojekt die vordefinierte Klasse, <vector> nutzen. Ich habe mein Problem bereits gegoogelt und habe auch eine Lösung gefunden. Das Problem ist, wenn ich die Lösung 1 zu 1 übernehme, meckert der Compiler.
    Zu meinem Problem:
    Ich möchte den Eintrag an einer bestimmten Stelle verändern. Dazu habe ich folgenden Code:

    MyVector.h:

    #include <vector>
    using namespace std;
    
    vector<double>*  bedarfsVektor;
    void überschreibeWert(double neuerWert, int Stelle);
    .
    .
    .
    

    MyVector.cpp:

    MyVector::MyVector(){
           //Erstellen des neuen Vektors
           this->bedarfsVektor = new vector<double>;
           //Dim. des Vektors ist 3 und die Einträge werden mit 0 initialisiert.
           this->bedarfsVektor.resize(3, 0);
    }
    
    MyVector::überschreibeWert(double neuerWert, int Stelle){
         this->bedarfsVektor[Stelle] = neuerWert;
    }
    

    Die Lösung von der bekanntesten Seite(Überlauf 😉 ) ist in Zeile 9.
    Der Compiler meckert aber. Die Meldung ist: Kein "="-Operator stimmt mit diesen Operanden überein.

    Kann mir bitte jemand sagen, was genau falsch ist und wie ich dieses Problem fixen kann?

    Ich bedanke mich im Voraus



  • Warum ist bedarfsVektor ein Pointer?

    this->bedarfsVektor[Stelle] liefert einen std::vector. Rate mal, warum.



  • @manni66 Unser Lehrer hat das so vorgegeben, also die h-Datei. Zu deiner Frage; weil ich im Konstuktor(Z. 3) bedarfsVektor als neuer <vector> definiert habe?



  • Alles klar habs jetzt gefunden. Ich habe das so umgeschrieben:

    this->bedarfsVektor->at(Stelle) = neuerWert;
    

    Mich intressiert jetzt, warum das so klappt. Wenn ichs richtig verstanden habe, gibt diese Methode den Wert an einer bestimmten Stelle zurück (vgl. getter-Methoden Java). Dass ich über diese Methode den Wert verändern kann, ist sehr merkwürdig ,finde ich als cpp Anfänger.



  • at liefert eine Referenz auf das enthaltene Element zurück: vector::at
    Aber auch mit dem Index-Operator funktioniert es:

    (*this->bedarfsVektor)[Stelle] = neuerWert;
    

    Aber das mit dem Zeiger ist kompletter Unsinn (von deinem Lehrer)!


Log in to reply