Cocos2d iphone &引用;b2Body”前的预期说明符-量词列表;XCode中的错误

Cocos2d iphone &引用;b2Body”前的预期说明符-量词列表;XCode中的错误,cocos2d-iphone,box2d-iphone,Cocos2d Iphone,Box2d Iphone,我试图从CCSprite派生类来存储对应于其b2Body的sprite引用,但我得到了以下错误(代码中的注释) BoxSprite.h #import <Foundation/Foundation.h> #import "Box2D.h" #import "cocos2d.h" @interface BoxSprite : CCSprite { b2Body* bod; // Expected specifier-quantifier-list before b2Body

我试图从CCSprite派生类来存储对应于其b2Body的sprite引用,但我得到了以下错误(代码中的注释)

BoxSprite.h

#import <Foundation/Foundation.h>
#import "Box2D.h"
#import "cocos2d.h"

@interface BoxSprite : CCSprite {
    b2Body* bod; // Expected specifier-quantifier-list before b2Body
}

@property (nonatomic, retain) b2Body* bod; // Expected specifier-quantifier-list before b2Body

@end // Property 'bod' with 'retain' attribute must be of object type
#import <Foundation/Foundation.h>
#import "Box2D.h"
#import "cocos2d.h"

@interface BoxSprite : CCSprite {
    b2Body* bod;
}

-(b2Body*) getBod;
-(void) setBod:(b2Body *)b;

@end
我希望创建精灵并将身体分配给:

BoxSprite *sprite = [BoxSprite spriteWithBatchNode:batch rect:CGRectMake(32 * idx,32 * idy,32,32)];
...
sprite->bod = body; // Instance variable 'bod' is declared protected
然后通过以下方式访问b2Body:

if ([node isKindOfClass:[BoxSprite class]]) {
    BoxSprite *spr = (BoxSprite*)node;
    b2Body *body = spr->bod; // Instance variable 'bod' is declared protected
    ...
}

B2BoSE是C++对象,因此我必须自己制作吸收器和设置器,并将BxSpReM.m重命名为.mm文件。

BoxSprite.h

#import <Foundation/Foundation.h>
#import "Box2D.h"
#import "cocos2d.h"

@interface BoxSprite : CCSprite {
    b2Body* bod; // Expected specifier-quantifier-list before b2Body
}

@property (nonatomic, retain) b2Body* bod; // Expected specifier-quantifier-list before b2Body

@end // Property 'bod' with 'retain' attribute must be of object type
#import <Foundation/Foundation.h>
#import "Box2D.h"
#import "cocos2d.h"

@interface BoxSprite : CCSprite {
    b2Body* bod;
}

-(b2Body*) getBod;
-(void) setBod:(b2Body *)b;

@end
创建:

BoxSprite *sprite = [BoxSprite spriteWithBatchNode:batch rect:CGRectMake(32 * idx,32 * idy,32,32)];
...
[sprite setBod:body];
访问:

if ([node isKindOfClass:[BoxSprite class]]) {
    BoxSprite *spr = (BoxSprite*)node;
    b2Body *body = [spr getBod];
    ...
}
而不是

@property (nonatomic, retain) b2Body* bod;
使用

因为你没有传递objective-c对象。
@synthesis指令也会起作用,因此您不需要创建自己的getter和setter方法,除非您想同时执行其他操作。

它没有找到
b2Body
类的定义,它是在哪里定义的?
@property (assign) b2Body *bod;