void* Operator
-
hiho,
wenn ich
int a=0; if( cin>>a == cin ) // ...mache,
wird da dann 2x der void* Operator aufgerufen,
und die Adressen verglichen, die der void* Operator zurückliefert ?also so:
if( (cin>>a).operator void*() == cin.operator void*() ) // ...danke schonmal für eure Antworten

-
Google mal nach "safe bool idiom"...
-
Dweb, wieso willst du zwei Streams vergleichen (und dann noch das gleiche Objekt)? Möchtest du eventuell deren Adressen? Da die Streams keinen
operator==aufweisen, wird - wie du sagst - eine implizite Konvertierung nachvoid*vorgenommen.Tachyon schrieb:
Google mal nach "safe bool idiom"...
Das hat aber nicht direkt was mit dem Problem zu tun...
-
Nexus schrieb:
Tachyon schrieb:
Google mal nach "safe bool idiom"...
Das hat aber nicht direkt was mit dem Problem zu tun...
Nein, es hat ganz direkt mit dem Problem zu tun, und zeigt auch gleich, dass es dabei nicht um irgendwelche zurückgegebenen Adressen geht. Daraus wird auch direkt klar, das der Vergleich unsinnig ist.
-
Okay. Ich meinte "nicht direkt mit dem Problem zu tun" insofern, als es die Frage des Threaderstellers (was verglichen würde) so nicht beantwortet. Aber du hast natürlich schon Recht. Ich sagte auch "nicht direkt" anstatt "nicht".

-
Nexus schrieb:
Dweb, wieso willst du zwei Streams vergleichen (und dann noch das gleiche Objekt)? Möchtest du eventuell deren Adressen?
Ich habe etwas auf einer Seite gelesen, wo es darum geht
was passiert, wenn manint a; cin >> a;macht.
Und dann schrieben sie dort, dass eine überladene template Funktion der Klasse istream aufgerufen wird und die Daten in der Variable gespeichert werden,
und das cin Objekt zurückgegeben wird, um damit weitere Eingaben machen zu können.Und dann haben sie das Beispiel angeführt das ich gepostet habe.
Dann hat mich interessiert was dort verglichen wird.