2011-07-08 14 views
0

Cellというサブクラスで、CCSpriteのサブクラスであるこのクラスを持っていれば、Cellの3つのサブクラスがあります。'struct objc_object'には 'position'という名前のメンバーはありません

-(void)addCellToCell:(id)_cell; 

そして、私はこれを行うにしようとしています:クラスCelladdCellToCellと呼ばれ、私はメソッドをオーバーライドしていサブクラスの一つで

私は、オブジェクトを設定しようとしています

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

selfの位置(これはCellから継承しているので、別のCellのサブクラス化されたオブジェクト(潜在的には任意のoから)に対して、CCSpriteが変更されます。 3つのサブクラスのうちの1つ)。

しかし、私はこれを行うとき、私はエラーを取得する:

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

また、私が使用することをお勧め - の代わりに「>」「」だから私はそれにそれを変更します:

'struct objc_object' has no member named 'position'

ごめんなさい...混乱している場合は...ご不便をおかけして申し訳ありません。これらのエラーを修正するにはどうすればよいですか?セルクラスの

定義:

@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*を必ず使用してください。

関連する問題