2013-08-03 38 views
5

在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; 

這可能嗎?

+0

是的,至少在Xcode的iOS我得到錯誤 「無效操作數爲二進制表達式( 'CGPoint'(又名 '結構CGPoint')和 'CGPoint')」 – ndomin

+3

呀。在C中是不可能的。你可能會用C++來重載操作符,但是一般來說,不會。 – ipmcc

+0

@ipmcc好的,謝謝 – ndomin

回答

8

這裏是@ipmcc建議的「東西」:C++運算符重載。 警告:不要在家裏這樣做。

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

你可以重載運算符'struct's ?!我真的必須在我的C++上工作。 –

+1

@JoshCaswell好吧,'struct's和'class'es是一樣的,除了默認情況下它們的成員可見性設置爲'public'。 – 2013-08-03 20:51:05

+0

這很有意思。 –

2

不能在struct的使用算術運算符,很遺憾。你可以做的最好的功能是:

CGPoint NDCGPointMinusPoint(CGPoint p1, CGPoint p2) 
{ 
    return (CGPoint){p1.x-p2.x, p1.y-p2.y}; 
} 
+0

很好很簡單,謝謝! – turingtested