C++: ne peut pas static_cast de la double* int*

Lorsque j'essaie d'utiliser un static_cast de jeter un double* un int*, j'obtiens l'erreur suivante:

invalid static_cast from type double*’ to type int*’

Voici le code:

#include <iostream>
int main()
{
        double* p = new double(2);
        int* r;

        r=static_cast<int*>(p);

        std::cout << *r << std::endl;
}

Je comprends qu'il y aurait des problèmes de conversion entre un double et un int, mais pourquoi il y a un problème de conversion entre un double* et un int*?

Pas dupe, mais connexes: stackoverflow.com/questions/2253168/dynamic-cast-in-c/...
Il y a d'autres erreurs dans votre code, que j'ai détaillé dans ma réponse stackoverflow.com/questions/2473628/...
Si vous souhaitez modifier le flotteur de bits c'est la mauvaise façon de le faire. Utilisation memcpy à la place. Sinon, vous violez stricte aliasing règles et éventuellement violer l'alignement, trop.
"L'utilisation memcpy au lieu de" - et non pas à une int, mais plutôt d'une unsigned char[sizeof(double)]. Ou un uint64_t si vous savez que sizeof(double) == 8 et CHAR_BIT == 8, qui, très probablement, vous ne si vous en savez assez sur la mise en œuvre utilement à faire n'importe quoi avec les bits d'un double.

OriginalL'auteur samoz | 2010-03-18