我希望能够像我这样的“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来处理这些运算符?
答案 0 :(得分:3)
C,因此Objective-C不支持方法重载。
您必须改为编写自己的add
和multiply
函数。
答案 1 :(得分:0)
在Objective-C中,struct根本没有方法。您必须使用常规C函数(如vector3D add(vector3D, vector3D)
等)来执行此功能。
你可以使用Objective-C类并在它们上定义类似的方法,但是你应该非常清楚生命周期问题,特别是在使用嵌套“方法调用”的更复杂表达式中的WRT中间结果。谁将发布中间体?在这种情况下自动释放任何好处吗?等等。这些是你必须问自己的问题。