سؤال

In Objective-C I'm starting to work with CGPoints and when I need to add two of them the way I'm doing it is this:

CGPoint p1 = CGPointMake(3, 3);
CGPoint p2 = CGPointMake(8, 8);
CGPoint p3 = CGPointMake(p2.x-p1.x, p2.y-p1.y);

I would like to be able to just do:

CGPoint p3 = p2 - p1;

Is that possible?

هل كانت مفيدة؟

المحلول

And here's the "something" that @ipmcc suggested: C++ operator overloading. Warning: do not do this at home.

CGPoint operator+(const CGPoint &p1, const CGPoint &p2)
{
    CGPoint sum = { p1.x + p2.x, p1.y + p2.y };
    return sum;
}

نصائح أخرى

You can't use arithmetic operators on structs, unfortunately. The best you can do is a function:

CGPoint NDCGPointMinusPoint(CGPoint p1, CGPoint p2)
{
    return (CGPoint){p1.x-p2.x, p1.y-p2.y};
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top