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)!