Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
//Zuweisung eines anderen Vektors tdeVector3f& operator = (const tdeVector3f& a) { x += a.x; y += a.y; z += a.z; return *this; } //Zuweisung und addition eines anderen Vektors tdeVector3f& operator += (const tdeVector3f& a) { x += a.x; y += a.y; z += a.z; return *this; } |
Zitat
d:\projects\vector3d.cpp(52) : error C2801: "operator =" muss ein nicht statischer Member sein.
d:\projects\vector3d.cpp(53) : error C2065: 'x': nichtdeklarierter Bezeichner
d:\projects\vector3d.cpp(54) : error C2065: 'y': nichtdeklarierter Bezeichner
d:\projects\vector3d.cpp(55) : error C2065: 'z': nichtdeklarierter Bezeichner
dd:\projects\vector3d.cpp(56) : error C2673: 'operator =': Globale Funktionen haben keinen this-Zeiger
d:\projects\vector3d.cpp(61) : error C2805: Binärer Operator '+=' hat zu wenig Parameter
d:\projects\vector3d.cpp(62) : error C2065: 'x': nichtdeklarierter Bezeichner
d:\projects\vector3d.cpp(63) : error C2065: 'y': nichtdeklarierter Bezeichner
d:\projects\vector3d.cpp(64) : error C2065: 'z': nichtdeklarierter Bezeichner
d:\projects\vector3d.cpp(65) : error C2673: 'operator +=': Globale Funktionen haben keinen this-Zeiger
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
class tdeVector3f { public: float x,y,z; tdeVector3f() {} // Konstruktor (tut nichts) tdeVector3f(const tdeVector3f& v) : x(v.x), y(v.y), z(v.z) {} //Kopierkonstruktor tdeVector3f(const float vx,const float vy, const float vz) : x(vx), y(vy), z(vz) {} // Konstruktor der die eingegebenen Zahlen einsetzt }; // OPERATOREN //Addition zweier Vektoren inline tdeVector3f operator + (const tdeVector3f& a, const tdeVector3f& b) { return tdeVector3f(a.x + b.x, a.y + b.y, a.z + b.z); } //Subtraktion zweier Vektoren inline tdeVector3f operator - (const tdeVector3f& a, const tdeVector3f& b) { return tdeVector3f(a.x - b.x, a.y - b.y, a.z - b.z); } //Multiplikation zweier Vektoren inline tdeVector3f operator * (const tdeVector3f& a, const tdeVector3f& b) { return tdeVector3f(a.x * b.x, a.y * b.y, a.z * b.z); } //Division zweier Vektoren inline tdeVector3f operator / (const tdeVector3f& a, const tdeVector3f& b) { return tdeVector3f(a.x / b.x, a.y / b.y, a.z / b.z); } //Multiplikation mit einem Skalar (float) inline tdeVector3f operator * (const tdeVector3f& a, const float f) { return tdeVector3f(a.x * f, a.y * f, a.z * f); } //Multiplikation mit einem Skalar (float) vertauscht inline tdeVector3f operator * (const float f, const tdeVector3f& a) { return tdeVector3f(a.x * f, a.y * f, a.z * f); } //Division durch einen Skalar (float) inline tdeVector3f operator / (const tdeVector3f& a, const float f) { return tdeVector3f(a.x / f, a.y / f, a.z / f); } //Zuweisungsoperatoren //Zuweisung eines anderen Vektors tdeVector3f& operator = (const tdeVector3f& a) { x = a.x; y = a.y; z = a.z; return *this; } //Zuweisung und addition eines anderen Vektors tdeVector3f& operator += (const tdeVector3f& a) { x += a.x; y += a.y; z += a.z; return *this; } //Vergleichsoperatoren bool operator == (tdeVector3f& a, tdeVector3f& b) { return a.x == b.x && a.y == b.y && a.z == b.z; } bool operator != (tdeVector3f& a, tdeVector3f& b) { return a.x != b.x || a.y != b.y || a.z != b.z; } |
Zitat
Solltest du dir nochmal überlegen, ob der Rückgabewert (und der Code) bei = wirklich das ist, was du willst..
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
class tdeVector3f { public: // ... tdeVector3f& operator=( const tdeVector3f& a ); tdeVector3f& operator+=( const tdeVector3f& a ); }; tdeVector3f& tdeVector3f::operator=( const tdeVector3f& a ) { x = a.x; y = a.y; z = a.z; return *this; } tdeVector3f& tdeVector3f::operator += (const tdeVector3f& a) { x += a.x; y += a.y; z += a.z; return *this; } |
Zitat von »"drakon"«
Solltest du dir nochmal überlegen, ob der Rückgabewert ...
C-/C++-Quelltext |
|
1 2 3 4 |
tdeVector3f& operator = (const tdeVector3f& a) { return a; } |
Zitat von »"David_pb"«
Welcher bessere Rückgabewert würde dir denn spontan einfallen?
Zitat von »"Melechesh"«
Oh, natürlich:
C-/C++-Quelltext
1 2 3 4 tdeVector3f& operator = (const tdeVector3f& a) { return a; }
Ist das besser so?
Zitat von »"Melechesh"«
Oh, natürlich:
C-/C++-Quelltext
1 2 3 4 tdeVector3f& operator = (const tdeVector3f& a) { return a; }
Ist das besser so?
Zitat von »"Melechesh"«
@david_pb: :oops:, in demfall hab ich keine Ahnung was du meinst!
Werbeanzeige