NSRect et CGRect
belt
Membre
Apparemment, NSRect et CGRect sont des structures absolument identiques. Mais le compilateur rejette un paramètre CGrect lorsqu'il attend un NSRect. Evidemment, on peut toujours faire un casting, du genre : maFonction( *(NSRect*)&rect ) si rect est de type CGRect, et le compilateur ne dit plus rien. Mais avouez que ce n'est pas très élégant !
Si quequ'un a une autre idée.....
Si quequ'un a une autre idée.....
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaDrawingGuide/QuartzOpenGL/chapter_10_section_2.html
section Graphics Type Conversions
+
Chacha
[tt]NSRect tonNSRect = *((NSRect*)(&tonCGRect));[/tt]
ça ressemble vachement à ce que disait belt !
Une suggestion : modifier un fichier .h (si si !!) et remplacer la definition de NSRect par :
typedef NSRect CGRect
et le tour est joué !
Evidemment ça devient un peu moins portable !
Je trouve ça plus propre à utiliser ensuite !
J'avais pensé aussi à créer un constructeur de NSRect à partir d'un CGRect (qui serait appellé par appel implicite lors d'un cast comme tout autre constructeur de ce type), mais il me semble que les constructeurs de structure n'existent que dans la définition C++ des [tt]stuct[/tt], et pas C (donc par extension, pas Cocoa non plus)
Et puis on ne peux pas faire de catégorie sur les struct non plus donc de toute façon...
Et les unions alors ?
Je le savais bien sûr vu comme ça si on me demande ce que ça fait... mais je n'y avais plus pensé.
Ce n'est pas forcément la solution idéale, mais c'est une solution alternative à ce que j'ai proposé dans le post précédent. Bon je sais pas quelle est la meilleur méthode, je pense pas qu'il y en ait une plus qu'une autre chacune a ses avantages, à vous de choisir, c'est selon les goûts.
Bien sûr on peut créer ce genre d'unions autant pour les NS/CGRect que pour les NS/CGSize et tout ce qui s'y colle.