【问题标题】:How do I allow my Typedef Struct to Add, Subtract, Multiply and Divide?如何允许我的 Typedef Struct 进行加、减、乘和除?
【发布时间】:2011-10-15 10:07:00
【问题描述】:

我希望能够像这样在“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 来处理这些操作符?

【问题讨论】:

    标签: objective-c math struct typedef


    【解决方案1】:

    C 和 Objective-C 不支持方法重载。 您必须编写自己的 addmultiply 函数。

    【讨论】:

      【解决方案2】:

      在 Objective-C 中,结构根本不能有方法。您必须使用普通的 C 函数(如 vector3D add(vector3D, vector3D) 等)来执行该功能。

      您可以使用 Objective-C 类并在其上定义类似的方法,但您应该非常注意生命周期问题,尤其是 WRT 中间结果会导致嵌套“方法调用”的更复杂表达式。谁将释放中间体?在这种情况下自动释放有什么好处吗?等等。这些都是你必须问自己的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-17
        • 1970-01-01
        • 2014-01-01
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 2011-05-04
        • 2021-03-21
        相关资源
        最近更新 更多