2012-09-24 38 views
0

在C++類中不可能引用Objective C協議嗎?該目標C協議引用作爲C++類中的實例變量

(id)<B2ContactListener> _B2ContactListener; 

線導致兩個誤區:

'預期;在聲明列表 '末端

' C++需要用於所有聲明」類型說明符。

這是代碼。

B2_ContactListener.mm:

#import "Box2D.h" 
#import "B2_ContactListener.h" 

class ContactListener : public b2ContactListener 
{ 
private: 
    (id)<B2ContactListener> _B2ContactListener; // ERRORs 

public: 
    //Methods 
}; 

B2_ContactListener.h:

#import "B2_Contact.h" 

@protocol B2ContactListener 
-(void)B2BeginContact: (B2Contact*) contact; 
@end 

我使用的是當前的XCode編譯BTW。

回答

1

刪除括號:

id<B2ContactListener> _B2ContactListener; 

這應該工作。

另一件你可能想考慮的事情是改爲NSObject *,這樣你就可以調用從NSObject繼承的方法而不必進行轉換。

+0

不,不要讓它成爲'NSObject *'。協議應該擴展'NSObject'協議 – newacct

+0

@newacct當然,但是你不能調用從'NSObject'繼承的方法。有時你可以做出假設,有時你不能。 –