Definition von Casting-Operatoren für Klassen (static_cast)
-
Hallo!
Wie definiere ich Casting-Operatoren für meine Klassen/Strukturen für static_cast, reinterpret_cast, etc.?
-
Für reinterpret_cast, dynamic_cast, const_cast: Gar nicht. Wäre auch ziemlich sinnlos.
Für static_cast:
class A { public: // T ist irgendein Typ (z.B. int) operator T() const; };
Für die Umwandlung nach T braucht es meistens keinen static_cast.
-
Wie definiere ich Casting-Operatoren für meine Klassen/Strukturen
Gar nicht. Geht nicht.
Mit Casten ist eine *explizite* Typumwandlung gemeint. Und eine solche geschieht in C++ über einen der exakt 4 Cast-Operatoren (static_cast, reinterpret_cast, const_cast, dynamic_cast), über einen Cast in "functional notation" (Type(val)) oder über einen "c-style" cast ((Type) val).
Nix davon kannst du für deine Klassen/Strukturen definieren.
cd9000 schrieb:
Für static_cast:
class A { public: // T ist irgendein Typ (z.B. int) operator T() const; };
Für die Umwandlung nach T braucht es meistens keinen static_cast.
Das ist weder für static_cast noch ein cast-Operator. Das ist ein *Konvertierungs*-Operator (conversion-operator). Und ein solcher ist nun gerade für eine *implizite* Umwandlung und damit eben gerade kein cast.
Natürlich kann man einen solchen Konvertierungs-Operator auch explizit über einen cast-Operator aufrufen, nur das ist wohl nicht das, was hier gemeint ist.
Worum geht es hier eigentlich?