Objekte als Parameter
-
Mehr von deinem aktuellen Code bitte...
-
//header Vector addition(const Vector& u); Vektor(); ~Vektor(); Vektor(float a, float b, float c); Vektor(Vector &a); //source Vector::Vector(float a, float aa, float aaa){ this->a1=a.1; this->a2=aa.1; this->a3=aaa.1; } Vektor Vektor::addition(Vebtor const& a){ return Vektor(this->a1+a.a1, this->a2+a.a2, this->a3+a.a3); } //main Vektor a(1,2,3); Vektor b(4,5,6); Vektor c = a.addition(b); //Hier kommt die Fehlermeldung
-
Du wirfst Vector und Vektor wild durcheinander. Ich glaube, ich habe auch einen Vebtor gesehen...
-
c++chiller schrieb:
//header Vektor addition(const Vektor& u); Vektor(); ~Vektor(); Vektor(float a, float b, float c); Vektor(Vektor &a); //source Vektor::Vektor(float a, float aa, float aaa){ this->a1=a //edit this->a2=aa; this->a3=aaa; } Vektor Vektor::addition(Vektor const& a){ return Vektor(this->a1+a.a1, this->a2+a.a2, this->a3+a.a3); } //main Vektor a(1,2,3); Vektor b(4,5,6); Vektor c = a.addition(b); //Hier kommt die Fehlermeldung
-
Erkläre mir mal bitte wozu du Zeilen 4 und 6 machst.
-
Wegen der Aufgabenstellung.
Aber wenn ich diese Zeilen rauskommentiere dann komm die gleiche Fehlermeldung.
-
c++chiller schrieb:
Wegen der Aufgabenstellung.
Aber wenn ich diese Zeilen rauskommentiere dann komm die gleiche Fehlermeldung.Dann zeig vollständigen Code noch einmal.
-
class Vektor{ ... };
-
Vektor(Vector &a);
hier fehlt ein
const
non-const
Referenzen dürfen nicht an RValues (vereinfacht: "namenlose objekte", wie hier der returnwert von "addition") gebunden werden
die kopie darf zwar wegoptimiert werden, der compiler muss aber trotzdem prüfen ob sie erlaubt wäre, wenn er sie machen würde
-
hustbaer schrieb:
Vektor(Vector &a);
hier fehlt ein
const
non-const
Referenzen dürfen nicht an RValues (vereinfacht: "namenlose objekte", wie hier der returnwert von "addition") gebunden werden
die kopie darf zwar wegoptimiert werden, der compiler muss aber trotzdem prüfen ob sie erlaubt wäre, wenn er sie machen würdeDas ist die Lösung! Das mit const muss ich mir noch genauer angucken.
Vielen Dank an alle!!
-
c++chiller schrieb:
Das ist die Lösung! Das mit const muss ich mir noch genauer angucken.
Vielen Dank an alle!!void foo(int &i) { } void bar(const int& i) { } int main() { foo(5); bar(5); }
Ist dir klar, warum der Aufruf von bar geht, der von foo nicht? Dein Fall ist identisch, bloß dass der Aufruf von
Vektor::Vektor(Vektor&)
ein bisschen versteckt ist.
-
Ist dir klar, warum der Aufruf von bar geht, der von foo nicht?
Nein leider nicht