在Objective-C,我開始CGPoints
工作,當我需要添加他們兩個我做的方式是這樣的:算術兩個CGPoints用+或 - 運營商
CGPoint p1 = CGPointMake(3, 3);
CGPoint p2 = CGPointMake(8, 8);
CGPoint p3 = CGPointMake(p2.x-p1.x, p2.y-p1.y);
我希望能夠做到:
CGPoint p3 = p2 - p1;
這可能嗎?
在Objective-C,我開始CGPoints
工作,當我需要添加他們兩個我做的方式是這樣的:算術兩個CGPoints用+或 - 運營商
CGPoint p1 = CGPointMake(3, 3);
CGPoint p2 = CGPointMake(8, 8);
CGPoint p3 = CGPointMake(p2.x-p1.x, p2.y-p1.y);
我希望能夠做到:
CGPoint p3 = p2 - p1;
這可能嗎?
這裏是@ipmcc建議的「東西」:C++運算符重載。 警告:不要在家裏這樣做。
CGPoint operator+(const CGPoint &p1, const CGPoint &p2)
{
CGPoint sum = { p1.x + p2.x, p1.y + p2.y };
return sum;
}
你可以重載運算符'struct's ?!我真的必須在我的C++上工作。 –
@JoshCaswell好吧,'struct's和'class'es是一樣的,除了默認情況下它們的成員可見性設置爲'public'。 – 2013-08-03 20:51:05
這很有意思。 –
不能在struct
的使用算術運算符,很遺憾。你可以做的最好的功能是:
CGPoint NDCGPointMinusPoint(CGPoint p1, CGPoint p2)
{
return (CGPoint){p1.x-p2.x, p1.y-p2.y};
}
很好很簡單,謝謝! – turingtested
是的,至少在Xcode的iOS我得到錯誤 「無效操作數爲二進制表達式( 'CGPoint'(又名 '結構CGPoint')和 'CGPoint')」 – ndomin
呀。在C中是不可能的。你可能會用C++來重載操作符,但是一般來說,不會。 – ipmcc
@ipmcc好的,謝謝 – ndomin