Y a-t-il quelque chose comme C ++ S Cover Safe dans Objective-C? p>
Je sais qu'ils sont dans l'objectif C ++, mais je ne suis pas sûr des effets secondaires possibles. L'utilisation de l'objectif C ++ peut ralentir le temps de compilation - y a-t-il d'autres raisons de ne pas l'utiliser? P>
3 Réponses :
Quelle fonctionnalité de C ++ pensez-vous vous aidera à lancer un long code> à un
int code> 32 bits? p>
Dans de nombreuses implémentations de compilateur long code> est de 32 bits même sur une cible 64 bits. Et
long long code> est 64 bits.
Pas dans UNIX ou OS X. Le compilateur devrait vous donner un bon avertissement à ce sujet.
Cela aurait dû être un commentaire - pas une réponse. Le casting était une erreur - je crois que j'aurais reçu un avertissement si j'utilisais un C ++ Cast
Vous obtiendrez un avertissement lorsque vous essayez d'affecter une longueur de 64 bits à 32 bits int. Vous utilisez un casting statique précisément pour vous débarrasser de cet avertissement. En utilisant une distribution statique, vous dites au compilateur que vous savez ce que vous faites. Que vous utilisiez un ancien CAST CI ou un C ++ static_cast, le résultat est le même.
Quoi qu'il en soit, même si la motivation de la question de la sécurité des cases de sécurité est incorrecte, la question est toujours celle que je voudrais répondre
Vous pouvez activer les drapeaux du compilateur pour vous avertir dans des cas comme celui-ci. Cette erreur particulière serait capturée par le drapeau -Wconversion. P>
-Wonversion semble manquer l'erreur et soulever beaucoup d'erreurs parasites à la place
Objective-C a des mises en sécurité C ++. Alternativement, nous pouvons utiliser la réflexion d'exécution: références: p> cacao avec amour : p> p>
La coulée d'identification myobj à myclass * est redondante. Les identifiants peuvent être librement attribués à des variables de tout type d'objet.
"Objective-C a des mises en sécurité C ++". Que veux-tu dire? par exemple. dynamic_cast ou ainsi? Cela ne compile pas. Merci
Quelle était l'erreur et quel était le casting? Si le casting a été moulant un objet à un type différent (c'est-à-dire à partir de
ID code> à
nstring * code>), il peut affecter la manière dont le compilateur choisit le sélecteur à utiliser s'il y a plus de un sélecteur avec des signatures différentes.
Vous ne pouvez pas utiliser
dynamic_cast code> dans ce cas (la cible n'est pas un pointeur ou une référence à classe b>). Utilisez
static_cast code> à la place.
@KennyTM: merci, corrigé-le maintenant
J'étais accidentellement dans une Nsuinteger à un INT non signé au lieu d'un peu signé longtemps