Donc, si votre conversion de Void * en type * ou de type * à vide * Si vous utilisez:
_beginthread(func,0,static_cast<void*>(params)
3 Réponses :
Vous devez utiliser static_cast de sorte que le pointeur soit correctement manipulé pour pointer sur le bon emplacement. Toutefois, vous ne devez faire cela que si vous avez utilisé STATIC CAST pour lancer le pointeur de Void * en premier lieu. Sinon, vous devriez réinterpret_cast sur exactement le même type de pointeur d'origine (pas de bases ou telle). P>
Vous devez toujours éviter REINIERPRET_CAST CODE>, et dans ce cas
static_cast code> fera le travail. Il n'y a pas besoin d'une création de sorte lors de la conversion d'un pointeur
Void * code>. P>
Alors pourquoi avoir réinterpret_cast <>? Y a-t-il des situations où réinterpre_cast <> devrait être utilisé. Toutes les opérations de casting peuvent-elles être couvertes par les 3 autres opérateurs de distribution?
Si l'autre côté du vide * s'appliquera à une classe de base, vous devez également lancer à cette classe de base avant d'être affecté à NOID.
@Noah une référence pour cela?
Vous voulez dire en plus de la norme? Les moulages statiques autorisés et leurs résultats sont décrits dans 5.2.9 (expr.static.cast). Les paragraphes sur le vide * sont 4 et 10.
@ Martinyork Reterpret_cast est ce que vous utilisez pour aller entre des types non liés de la même taille (par exemple, intPTR_T <-> Void *, cela ne volera pas avec static_cast ou similaire).
@Logan Capaldo: Merci. J'essayais juste d'exprimer mon désaccord avec la déclaration de Neil.
Utilisez quel libellé dans le C ++ Standard permet de stagner_cast static_cast code> des deux côtés pour cela, puis enregistrez
REINERPRET_CAST CODE> pour quand aucune autre opération de casting ne le fera. Les sujets suivants fournissent plus de contexte et de détails: p>