Operator X und X=
-
@HumeSikkins
wie sieht denn der additionscode aus???
-
@---:
Das kommt ganz auf deine Klasse an. Als Beispiel Komplexe Zahlen:complex& complex::operator+=(const complex& c) { im += c.im; re += c.re; return *this; }
Wie gesagt, hängt von deiner Klasse ab
-
@Deadlef: ist ja richtig, aber ich glaube '---' meinte das nciht so ernst, wohl eher so etwas:
HUMAN operator+(const HUMAN & HumeSikkins, const HUMAN & gegenstueck){ HUMAN result(HumeSikkins); result += gegenstueck; return result; }
.....................bitte nicht schlagen......
-
freshman schrieb:
HUMAN operator+(const HUMAN & HumeSikkins, const HUMAN & gegenstueck)
wohl eher
const HUMAN operator+(const HUMAN & HumeSikkins, const HUMAN & gegenstueck)
-
const HUMAN operator+(const HUMAN & HumeSikkins, const HUMAN & gegenstueck)
begründung?
-
auf die Begründung bin ich ja auch mal gespannt!
@HumeSikkins: war nur Spaß, net bös sein
-
int main() { int a = 1, b = 2, c = 3; a + b = c; }
g++ schrieb:
test.cpp: In function `int main()':
test.cpp:4: error: non-lvalue in assignmentdo like the ints do.
-
int a[5]; int* i=a; *(i+1)=3;
oder auch:
vector<int> vector(10,5); vector<int>::iterator iterator=vector.begin(); *(iterator+3)=2;
-
@C Newbie
Jup. Sehr guter Hinweis. Ich werde meinen Beitrag entsprechend korrigieren.
-
int main() { int a[5]; int* i=a; i+1=3; }
g++ schrieb:
test.cpp: In function `int main()':
test.cpp:5: error: non-lvalue in assignment:p
-
hm ich glaube wir reden dran vorbei.
Ok, ich geb ne klasse vor und ihr sagt mir wie die aussehen müsste mit den beiden Operatoren, ist glaub ich am einfachsten für alle:
class Vector4D { public: double x; double y; double z; double w; };
-
zur Halbzeit: C Newbie : otze : freshman 1 : 0 : 0
CNewbie.isRight();
freshman.say("respect");
-
C Newbie schrieb:
int main() { int a[5]; int* i=a; i+1=3; }
g++ schrieb:
test.cpp: In function `int main()':
test.cpp:5: error: non-lvalue in assignment:p
sorry, ein *() vergessen^^
-
aber doch wohl die Attribute als private, like:
class Vector4D { private: double x; double y; double z; double w; public: Vector4D & operator+=(const Vector4D & vecSource); friend const Vector4D operator+(const Vector4D & vec01, const Vector4D & vec02); //oder als freie Fkt?? }; Vector4D & Vector4D::operator+=(const Vector4D & vecSource){ x += vecSource.x; y += vecSource.y; z += vecSource.z; w += vecSource.w; return * this; } const Vector4D operator+(const Vector4D & vec01, const Vector4D & vec02){ Vector4D vecSum(vec01); vecSum += vec02; return vecSum; }
-
Um das mal in eine lesbare Form zu bringen
int a[5]; int* i=a; *(i+1)=3; // ist gleich i[1] = 3;
-
@Freshman:
muss das nicht so lauten?Vector4D & Vector4D::operator+=(const Vector4D & vecSource){ x += vecSource.x; y += vecSource.y; z += vecSource.z; w += vecSource.w; return * this; }
-
C Newbie schrieb:
Um das mal in eine lesbare Form zu bringen
int a[5]; int* i=a; *(i+1)=3; // ist gleich i[1] = 3;
ja, aber die dereferenzierung ist bei nem const objekt nicht möglich-.-
-
freshman schrieb:
public: Vector4D & operator+=(const Vector4D & vecSource); //friend const Vector4D operator+(const Vector4D & vec01, const Vector4D & vec02); //muss kein friend sein, da die Funktion vollständig mit der öffentlichen Schnittstelle implementiert werden kann
-
@***: ne, wie kommst du denn da drauf'? glaube ich nicht...........
***.isRight(); //hast schon recht: + habe ich im Eifer des Gefechts glatt verschluckt
-
siehe hierzu auch (Klasse Complex):
http://www.gotw.ca/gotw/004.htm
http://www.c-plusplus.net/forum/viewtopic.php?t=79400
http://www.c-plusplus.net/forum/viewtopic.php?t=79472