【问题标题】:Where is the Class class declared/how to forward declare it?Class 类在哪里声明/如何转发声明它?
【发布时间】:2012-03-07 12:50:15
【问题描述】:

由于我的标头中有这个错误,我无法编译我的:

错误:预期标识符 [1]

-(void) removeAllEntitiesOfClass:(Class)class;

插入符号指向小写类。

删除此函数使其再次编译。

我的类是 NSObject 的子类,它有使用 Class 的公共方法,所以我认为这会自动声明。

我还尝试将 Class 更改为 Class* 并使用 @Class Class 转发声明,但这不起作用 - 它说这是重新定义,因为我正在更改类型。显然 Class 是一个类型定义的结构指针。我不确定如何在这里转发声明,我似乎记得转发声明指针 typedef 可能是一件令人讨厌的事情。如果我错了,请纠正我,并告诉我要导入什么文件或如何转发声明。

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

【问题讨论】:

  • 很奇怪。它应该可以工作。头文件里有#imported Foundation吗?
  • 它编译得很好……你可能设置了错误的架构或目标?
  • @Costique:是的,我试过 无济于事。
  • @Peter:感谢测试,我看看我的配置。目标是iOS。虽然,该项目已经构建了很长一段时间,但没有更改配置。
  • 很抱歉没有说明我在使用 obj-C++ 工作,编辑问题标签。

标签: objective-c ios objective-c++ forward-declaration metaclass


【解决方案1】:

我怀疑您的标题在 Objective-C++ 翻译中是可见的。在 C++ 中,class 是一个关键字。要解决此问题,请将参数名称从 class 更改为某个非关键字。

【讨论】:

  • 啊,是的,这是有道理的。有趣的是方法名称“类”如何不会导致错误(与 new 一样),但参数名称会。
猜你喜欢
  • 2015-08-30
  • 2012-11-17
  • 1970-01-01
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
相关资源
最近更新 更多