J'ai vu cela dans notre code quelques fois et cela me rend immédiatement suspect. Mais puisque je ne connais pas l'intention originale, j'hésite à l'enlever.Quel serait le but de l'utilisation immédiate des opérateurs de référence et de déréférencement dans la séquence "& * B"?
//requires double indirection which I won't go into
FooClass::FooFunction(void ** param)
{
//do something
}
SomeClass * A = new SomeClass();
SomeClass **B = &A;
FooFunction(reinterpret_cast<void**>(&*B)); // what is happening here?
La partie "& * B" est la partie en question? N'hésitez pas à intégrer l'explication du casting de réinterprétation mais je suis assez familier avec les techniques de casting.
Etes-vous sûr que "SomeClass ** A = new A();" ne contient pas un type? Ne devrait-il pas être "SomeClass * A = new A();"? – mmmmmmmm
Le code que vous avez montré ne peut pas être celui que vous demandez, parce qu'il est faux ('SomeClass ** A = new A()' ne compilera pas) dans un endroit critique pour la réponse ("what is' A'? "). Vous aurez probablement besoin de résoudre ce problème afin d'obtenir des réponses significatives. – sbi
Ce code est mal formé. Vous ne pouvez pas utiliser le nom de la classe en tant qu'identifiant pour la variable. –