iterator
-
ssm schrieb:
Deine Get Methode ist fehlerhaft

Wieso ???
Sie kopiert das Objekt und du gibst eine Konstante Referenz darauf zurück ...
-
@ssm

und es funktioniertDANKE!
Kannst du bitte mir erklären, warum kam zur richtigen Ausgabe mit cout<<coeff.values()[i] und fehlerhaft mit cout<<*p_h
DANKEDANKEDANKE
-
Freak_Coder schrieb:
ssm schrieb:
Deine Get Methode ist fehlerhaft

Wieso ???
Sie kopiert das Objekt und du gibst eine Konstante Referenz darauf zurück ...
Das kopieren ist aber nicht "schön".
-
Freak_Coder schrieb:
Wieso ??? Sie kopiert das Objekt und du gibst eine Konstante Referenz darauf zurück ...
Weil carmen wollte, dass das richtig funktioniert:
for(vector<double>::iterator p_h = coeff.values().begin(); p_h != coeff.values().end(); p_h++) { cout << *p_h << endl; }oder?
-
@ ssm Ja es funktioniert und meine algorithmen werden auch in der Klasse Filter mit iteratoren funktionieren, aber ich möchte verstehen warum???? sonst werde ich den Fehler wiederholen
DANKE ssm
-
-
dafür habe ich keine Zeit

-
Weil in der alten Version coeff.values() eine Kopie ist. Davon (von der Kopie!) holst Du Dir den begin() Iterator. Danach wird die Kopie gelöscht, sie wurde ja nur gebraucht um .begin() anzuwenden. Der Iterator zeigt nun auf eine nicht (mehr) vorhandene Collection. Der Rest ergibt sich

-
AH!Verstanden! aber warum brauche ich const vector<double>& und nicht nur vector<double> &??
-
Wenn du kein const davor hast, kann jeder der die Referenz erhält das Objekt, d.h deine PRIVATE Variable ändern !