2011-11-01 59 views
1

之前*错误(预期说明符限定符列表错误),我有以下代码:预计*在Xcode

@interface Building : GameObject 
{ 
    CGPoint mapSquarePos; 
    CGPoint SquareSize; 
    bool isBuilding; 
    UIImage *BuildingImage; 
    Person *garnisonedPerson; //Error is here 
} 

我已导入Person.h文件。这是什么原因错误

+5

不Person.h进口Building.h? –

回答

4

尝试

@class Person; 
@interface Building : GameObject 
{ 
    CGPoint mapSquarePos; 
    CGPoint SquareSize; 
    bool isBuilding; 
    UIImage *BuildingImage; 
    Person *garnisonedPerson; //Error is here 
} 

,并在实现文件

如果不起作用进口Person.h,似乎BuildingImage可能是一个类名。

更新Rickyman20

@class Person 

告诉编译器的人是一类。通常我不会在头文件中导入其他头文件。我这样做的一个例子是当我使用cocos2d。

在我的头文件的情况下#import "cocos2d.h让我的头内使用整个的cocos2d库,而不会导致编译器错误

+2

允许变量名与类名相同(它不会导致编译时错误),尽管实际上这样做会是一个糟糕的主意(因为它会破坏类名)。 –

+0

谢谢!有效。现在,它的工作,@class究竟做了什么? – rdelfin

+0

我更新了关于@class的注释。它让编译器知道Person是一个类而不是拼写错误。在你的实现中导入Person.h使得你的类可用的所有方法。 (我知道当我忘记这么做时,xcode不会自动完成我的自定义方法) –