1

我不能編譯我的,因爲這個錯誤在我的頭的。Class類在哪裏聲明/如何轉發聲明?與插入符號指向小寫類</p> <blockquote> <p>error: expected identifier [1]</p> <p>-(void) removeAllEntitiesOfClass:(Class)class;</p> </blockquote> <p>:

刪除此功能使得它重新編譯。

我的類是NSObject的,它有使用類public方法的一個子類,所以我認爲這將自動地被宣佈。

我也試圖改變類類*和轉發與@class類聲明,這不工作 - 它說,這是一個重新定義,因爲我改變的類型。顯然,Class是一個typedef'd結構體指針。我不知道如何在這裏轉發聲明,並且我似乎記得,轉發聲明指針typedef可能是一件討厭的事情。如果我錯了,請糾正我,並告訴我要導入什麼文件或如何轉發聲明。

@interface GameState : NSObject { 
... 
} 
... 
-(void) removeAllEntitiesOfClass:(Class)class; 
@end            
+0

奇怪。它應該只是工作。你有沒有在頭文件中導入基金會? – Costique 2012-02-16 05:32:27

+0

它編譯在我結束細......你可能設置一個錯誤的架構或可能的目標? – 2012-02-16 05:39:32

+0

@Costique:是的,我想<基金/ Foundation.h>無濟於事。 – 2012-02-16 05:44:37

回答

2

我懷疑你的頭文件在Objective-C++翻譯中是可見的。在C++中,class是一個關鍵字。要解決此問題,請將參數的名稱從class更改爲某個非關鍵字。

+1

啊,是的,這是有道理的。有趣的是,方法名稱'class'不會導致錯誤(與new一樣),但參數名稱可以。 – 2012-02-16 05:53:44