2011-07-28 2 views
0

Je veux être en mesure d'utiliser les fonctions mathématiques sur mes "Vector3D" s comme siComment autoriser mon Typedef Struct à Ajouter, Soustraire, Multiplier et Diviser?

vector3D a = v3d(1.0,1.0,1.0); 
vector3D b = v3d(2.0,0.0,5.0); 

a+=b; 
vector3D c = a*b; 

Le code pour mon struct typedef:

typedef struct _vector3D{ 
    float x; 
    float y; 
    float z; 
}vector3D; 


static inline vector3D 
v3d(const float x, const float y, const float z) 
{ 
    vector3D v = {x,y,z}; 
    return v; 
} 

Comment puis-je permettre à mon struct typedef Vector3D gérer ces opérateurs?

Répondre

3

C, et donc Objective-C, ne supporte pas la surcharge de méthode. Vous devrez écrire vos propres fonctions add et multiply à la place.

0

En Objective-C, une structure ne peut pas avoir de méthodes du tout. Vous devez utiliser des fonctions C normales comme vector3D add(vector3D, vector3D), etc. pour exécuter la fonctionnalité. Vous pouvez utiliser des classes Objective-C et y définir des méthodes similaires, mais vous devez être très conscient des problèmes de durée de vie, en particulier des résultats intermédiaires WRT dans des expressions plus complexes avec des "appels de méthode" imbriqués. Qui va libérer l'intermédiaire? L'autorelease est-elle bonne dans de telles situations? Etc. Ce sont les questions que vous devrez vous poser.

Questions connexes