Gibt es die Möglichkeit *this auszugeben?
-
Der *this eines Objektes zeigt ja immer auf sich selbst. Kann ich diesen *this auch irgendwie sichtbar machen, also ausgeben? Mit cout hatte ich kein Glück, der kann damit nix anfangen.
-
Ich verstehe dein Problem nicht. Natürlich kannst du
*thisausgeben, vorausgesetzt, dass eine entsprechende Überladung desoperator<<existiert...Eine Fehlermeldung wäre auch schön.
-
Sone schrieb:
Ich verstehe dein Problem nicht. Natürlich kannst du
*thisausgeben, vorausgesetzt, dass eine entsprechende Überladung desoperator<<existiert...p0wned, h4x0r

Butterbrot schrieb:
Mit cout hatte ich kein Glück, der kann damit nix anfangen.
Dann hast was falschgemacht.
#include <iostream> struct foo_t { void print_this() { std::cout << this << '\n'; } }; int main() { foo_t foo; foo.print_this(); }
-
edit: hier stand Müll ^^
-
Oh ja ich wollte *this ausgeben und habe this gar nicht probiert^^
Danke nun geht es.
EDIT: Es ging mir nur darum mit Kopiekonstruktor, Zuweisungoperator und so etwas rumzuspielen und mir anzugucken wann welche Objekte erzeugt werden. Achja jetzt kommt ja noch die Move-Geschichten dazu, das muss ich auch noch verinnerlichen.
-
Swordfish schrieb:
#include <iostream> struct foo_t { void print_this() { std::cout << this << '\n'; } }; int main() { foo_t foo; foo.print_this(); }Besser mit const und cast auf void*, da die Ausgabe des Pointers überladen sein kann:
#include <iostream> struct foo_t { void print_this( std::ostream& out ) const { out << static_cast< const void* >( this ); } }; std::ostream& operator<<( std::ostream& out, const foo_t* p ) { return out << "foo_t*(" << static_cast< const void* >( p ) << ")"; } int main() { using std::cout; foo_t foo; foo.print_this( cout << "this: " ); cout << "\n"; cout << "Pointer: " << &foo << "\n"; }