reinterpret_cast versteh ich noch nicht ganz
-
Das mit dem reinterpret_cast verstehe ich immer noch nicht ganz, bei folgendem, Beispiel:
#include <iostream> #include <string> using namespace std; int main() { int value=122; double X=12.36444; int *p1=&value; return 0; }kommt eine Warnung. Weil ich ja den Wert von einem "double" in eine "int" Variable reinhaue. Okay, also habe ich mir gedacht wende ich hier einen "reinterpret_cast" an (weil es handelt sich ja um einen Zeiger), sodass ich die Warnung weg bekomme.
#include <iostream> #include <string> using namespace std; int main() { int value=122; double X=12.36444; int *p1=&value; *p1=reinterpret_cast<int*>(X); return 0; }Aber das geht nicht, das kommt die Fehlermeldung hier:
Compiling: C:\MinGW\Andi\casts.cpp
C:\MinGW\Andi\casts.cpp: In functionint main()': C:\\MinGW\\Andi\\casts.cpp:13: error: invalid reinterpret_cast from type \double' to type `int*'
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warningsMh was mach ich falsch? Ist das der falsche cast? Der einzige cast der mit einfallen würde, der passen könnte wäre "static_cast", aber den wende ich ja nur an, wenn ich von double nach int konvertiere, bei NICHT Zeiger Variablen.!?
Mh, kann mir jemand helfen?MfG
Stromberg
-
Achtung Halbwissen
Du willst, dass ein int-Zeiger auf einen double-Wert zeigt. Das geht nicht...
MfG
-
Was willst du eigentlich erreichen? Gehen würde z.B.
int* p = reinterpret_cast<int*>(&X);, aber ob das das ist, was du willst, weiß ich nicht.
-
Gut, dann ahb ichs falsch verstanden. Jetzt weiß ich wies geht, ich wollte genau das hier erreichen:
#include <iostream> #include <string> using namespace std; int main() { int value=992; double X=12.36444; int *p1=&value; *p1=static_cast<int>(X); cout << value << endl; return 0; }Der Variable "value" über den Zeiger p1 den Wert von der double-Variable X übergeben, ohne das mein Compiler eine Warnung ausspuckt!
MfG
Stromberg