所以我有一个名为Cell
的类,它是CCSprite
的子类,然后我有另外三个Cell
的子类。
在其中一个子类中,我覆盖了类addCellToCell
中名为Cell
的方法:
-(void)addCellToCell:(id)_cell;
我正在尝试这样做:
self = [CCSprite spriteWithFile:@"Jet.png"];
[self setPosition:ccp(_cell.position.x+5, _cell.position.y)];
我试图设置对象self
的位置(由于它是从Cell
继承的,因此它相对于另一个CCSprite
使其基本上成为修改后的Cell
}子类化对象(可能来自三个子类中的任何一个)。
但是当我这样做时,我得到错误:
请求'_cell'中的成员'position',这是非类型'objc_object *'
它还建议我使用“ - >”代替 ”。”所以我改成它:
'struct objc_object'没有成员 命名为“职位”
很抱歉,如果它令人困惑...如果您需要,请询问任何澄清。我该如何解决这些错误?
Cell class的定义:
@interface Cell : CCSprite {
}
-(void)addToCell:(id)_cell;
@end
答案 0 :(得分:1)
在使用它之前将其投射到Cell
对象,
Cell aCell = (Cell *)_cell;
然后
[self setPosition:ccp(aCell.position.x+5, aCell.position.y)];
答案 1 :(得分:0)
只需更改
-(void)addCellToCell:(id)_cell;
到
-(void)addCellToCell:(Cell*)_cell;
除非绝对必要,否则请勿使用 id
。请始终使用ClassName*
。