Я реализую объектную C-оболочку для Box2d (написанную на C++). B2Body сохраняет ссылку на свою обертку B2Body в поле userData. GetUserData возвращает пустоту *. Теперь я внедряю быструю итерацию для того, чтобы вытащить из 2DWorld.'Назначение' id 'из несовместимого типа'
Я получаю сообщение «Присвоить идентификатор» из несовместимого типа «B2Body *» в строке, указанной ниже. Зачем?
#import "B2Body.h"
#import "B2World.h"
#import "Box2d.h"
@implementation B2World
-(id) initWithGravity:(struct B2Vec2) g
{
if (self = [super init])
{
b2Vec2 *gPrim = (b2Vec2*)&g;
_world = new b2World(*gPrim);
}
return self;
}
- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __unsafe_unretained [])buffer count:(NSUInteger)len;
{
if(state->state == 0)
{
state->mutationsPtr = (unsigned long *)self;
state->extra[0] = (long) ((b2World*)_world)->GetBodyList();
state->state = 1;
}
// pull the box2d body out of extra[0]
b2Body *b = (b2Body*)state->extra[0];
// if it's nil then we're done enumerating, return 0 to end
if(b == nil)
{
return nil;
}
// otherwise, point itemsPtr at the node's value
state->itemsPtr = ((B2Body*)b->GetUserData()); // ERROR
state->extra[0] = (long)b->GetNext();
// we're returning exactly one item
return 1;
}
`
B2Body.h выглядит следующим образом: #import
@interface B2Body : NSObject
{
int f;
}
-(id) init;
@end
Какая строка указана ниже? – deanWombourne
Тот, который отмечен // ERROR –
А, извините. Я слепой :) – deanWombourne