In C ++ reinterpret_castkönnen nur bestimmte Konvertierungen durchgeführt werden, die in der Sprachspezifikation explizit aufgeführt sind. Kurz gesagt, reinterpret_castkann nur Zeiger-zu-Zeiger-Konvertierungen und Referenz-zu-Referenz-Konvertierungen durchführen (plus Zeiger-zu-Ganzzahl- und Ganzzahl-zu-Zeiger-Konvertierungen). Dies steht im Einklang mit der Absicht, die im Namen der Besetzung zum Ausdruck kommt: Sie soll für die Neuinterpretation von Zeigern / Referenzen verwendet werden.
Was Sie versuchen, ist keine Neuinterpretation. Wenn Sie eine intals neu interpretieren möchten, müssen doubleSie sie in einen Referenztyp konvertieren
double y = reinterpret_cast<double&>(x);
obwohl die äquivalente zeigerbasierte Neuinterpretation wahrscheinlich expliziter ist
double y = *reinterpret_cast<double*>(&x);
Beachten Sie jedoch, dass reinterpret_castder tatsächliche Versuch, die Daten über die resultierende Referenz / den resultierenden Zeiger zu lesen , zwar zu einer Konvertierung der Referenz- / Zeigertypen führt, jedoch zu einem undefinierten Verhalten führt.
Und auf jeden Fall kann dies auf einer Plattform mit intund doubleunterschiedlicher Größe nicht viel Sinn machen (da Sie bei größeren Plattformen doubleüber den von gelesenen Speicher hinaus lesen werden x).
Am Ende läuft alles auf das hinaus, was Sie erreichen wollten. Neuinterpretation des Gedächtnisses? Siehe oben. Eine Art von Bedeutung intfür die doubleKonvertierung? Wenn ja, reinterpret_castwird Ihnen hier nicht helfen.