J'essaie de lancer un vecteur à void*
et vice versa. La classe est glm::vec3
.static_cast de et vers void * ne fonctionne pas comme prévu
Qu'est-ce que je fais est:
glm::vec3 a = glm::vec3(10,10,10);
void* b = static_cast<void*>(&a);
glm::vec3 new_a = *static_cast<glm::vec3*>(b);
Maintenant, si je fais ces opérations dans la même portée, pas de problème, a
et new_a
sont les mêmes. Mais si j'enregistrer le void*
dans, par exemple, un attribut de classe, puis que vous essayez de le convertir en vec3
dans une autre fonction, la conversion de glm::vec3
en void*
est maintenant erronée et a!=new_a
.
Avez-vous une idée pourquoi cela se produit? Pourrait-il être lié à la portée de glm::vec3
?
* "Cela peut-il être lié à la portée de glm :: vec3?" * Oui –
Pouvez-vous essayer de créer un [Exemple minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) et nous montrer? –
Vous semblez essayer de stocker un pointeur sur une variable locale. –