Verständnisfrage zu reinterpret_cast
-
Ich habe ein kleines Verständnisproblem zum keyword reinterpret_cast:
http://cppreference.com/keywords/reinterpret_cast.htmlhttp://cppreference.com/keywords/reinterpret_cast.html schrieb:
The reinterpret_cast operator changes one data type into another. It should be used to cast between incompatible pointer types.
Was vesteht man GENAU unter "incompatible"?
- Pointer zeigen auf unterschiedliche Datenstrukturen aber die Datenstruckuren sin dennoch identisch => kein problm beim casten
ODER
- Pointer zeigen auf unterschiedliche Datenstrukturen und die Datenstrukuren sind gaaanz anders
Was trifft zu? 1 oder 2 ????
-
inkompatibel ist eine ungünstige wortwahl. in diesem zusammenhang sind zwei pointer p und q verschiedenen typs inkompatibel, wenn weder
p = q;noch
q = p;gültige ausdrücke sind, d.h. es gibt keine implizite konvertierung in irgendeiner richtung. implizite pointerkonvertierungen sind ja möglich für beliebige objektpointer in void* und von pointern einer abgeleiteten klasse in einen pointer einer (zugreifbaren und eindeutigen) basisklasse. die empfehlung im angebenen link auch ist ein bisschen sehr kurz. es gibt wohl ein oder zwei FAQ-beiträge über casts, die aber nur einige aspekte behandeln. wenn interesse besteht, schreib ich mal etwas ausführlicher darüber.
edit: andererseits wird die faq eh nur von leuten gelesen, die es nicht unbedingt nötig haben. also kann ich es genausogut lassen :p
-
camper schrieb:
inkompatibel ist eine ungünstige wortwahl. in diesem zusammenhang sind zwei pointer p und q verschiedenen typs inkompatibel, wenn weder
p = q;noch
q = p;gültige ausdrücke sind, d.h. es gibt keine implizite konvertierung in irgendeiner richtung. implizite pointerkonvertierungen sind ja möglich für beliebige objektpointer in void* und von pointern einer abgeleiteten klasse in einen pointer einer (zugreifbaren und eindeutigen) basisklasse. die empfehlung im angebenen link auch ist ein bisschen sehr kurz. es gibt wohl ein oder zwei FAQ-beiträge über casts, die aber nur einige aspekte behandeln. wenn interesse besteht, schreib ich mal etwas ausführlicher darüber.
edit: andererseits wird die faq eh nur von leuten gelesen, die es nicht unbedingt nötig haben. also kann ich es genausogut lassen :p
Thx! reinterpret_cast ist das was ich gesucht habe! ( C casts in C++ Progs soll ja net so der Hit sein. und ich muss struct sockaddr_in* casten auf struct sockaddr*. Also passt reinterpret_cast hier )
-
edit: andererseits wird die faq eh nur von leuten gelesen, die es nicht unbedingt nötig haben. also kann ich es genausogut lassen
Genau denjenigen nimmst du damit aber arbeit ab, da diejenigen dann sich wiederholende Fragen einfach mit einem Link beantworten können

Zum Thema Casts wollte ich schon seit Jahren eine FAQ schreiben, bin aber nie dazu gekommen. Wenn du also Lust und Zeit hast: super wäre es.