2011-07-08 68 views
0

所以我有這個類叫做Cell這是CCSprite的一個子類,然後我有另外三個Cell的子類。'struct objc_object'has no member named'position'

在我重寫的方法中的一個子類中Cell類稱爲addCellToCell

-(void)addCellToCell:(id)_cell; 

,我試圖做到這一點:

self = [CCSprite spriteWithFile:@"Jet.png"]; 
    [self setPosition:ccp(_cell.position.x+5, _cell.position.y)]; 

當我試圖設置對象self的位置(因爲它繼承自Cell,所以它使其基本上是修改的CCSprite)相對於另一個Cell子類對象(可能來自任何o三個亞類的ne)。

但我做到這一點時,我得到的錯誤: - 「」

request for member 'position' in '_cell', which is of non-class type 'objc_object*'

還建議我用「>」,而不是所以我把它更改爲:如果

'struct objc_object' has no member named 'position'

對不起它是混亂...請​​詢問任何澄清,如果你需要一些。我該如何解決這些錯誤? Cell類的

定義:

@interface Cell : CCSprite { 
} 

-(void)addToCell:(id)_cell; 

@end 
+0

'Cell'類的定義是什麼? –

+0

@Adam:已更新的問題。 – Dair

+0

這項工作在哪裏發生?在初始化程序中?如果發生在其他地方,我會懷疑。如果它在初始化程序中,那麼你至少有一種不尋常的風格......你真的想在自己的代碼片段中給自己指定一個新的值嗎? – Dirk

回答

1

投它使用它之前Cell對象,

Cell aCell = (Cell *)_cell; 

然後

[self setPosition:ccp(aCell.position.x+5, aCell.position.y)]; 
0

只要改變

-(void)addCellToCell:(id)_cell; 

-(void)addCellToCell:(Cell*)_cell; 

不要使用id除非絕對必要。改爲使用ClassName*

相關問題