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

相关问题