Как мне разрешить моей Структуре Typedef складывать, вычитать, умножать и делить? - PullRequest
0 голосов
/ 28 июля 2011

Я хочу иметь возможность использовать математические функции на моих "vector3D", вот так

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

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

Код для моей структуры 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;
}

Как мне разрешить моей typedef struct vector3D обрабатывать эти операторы?

Ответы [ 2 ]

3 голосов
/ 28 июля 2011

C и, следовательно, Objective-C, не поддерживает перегрузку методов. Вместо этого вам придется написать свои собственные функции add и multiply.

0 голосов
/ 29 июля 2011

В Objective-C структура не может иметь методов вообще. Вы должны будете использовать обычные функции C, такие как vector3D add(vector3D, vector3D) и т. Д. Для выполнения этой функции.

Вы можете использовать классы Objective-C и определять аналогичные методы для них, но вы должны ужасно знать о проблемах времени жизни, особенно промежуточные результаты WRT приводят к более сложным выражениям с вложенными «вызовами методов». Кто выпустит промежуточное звено? В таких ситуациях хорош ли авто-релиз? И т.д. Вот вопросы, которые вы должны будете задать себе.

...