cocos2dとBox2Dを使用してiPhoneゲームを作成しようとしています。つまり、Objective-CとC++を組み合わせる必要があります。作成したgameLevelsとlevelObjectsのオブジェクトへのポインターの使用に関して質問があります。
levelObjectsのベクトルを含むGameLevelというクラスがあります。できるだけメモリを使わないようにするために、ポインタを使用するのがその方法だと思いました。つまり、私のベクトルは
std::vector<LevelObject*>* levelObjects;
LevelObjectクラスには、スプライト、b2bodyDefなど、すべてのポインターも含まれています。
レベルを描画したいときにこのベクトルを反復処理したいときに問題が発生しました。私が書いたコードはこれでした:
-(void)startLevel:(b2World*) world withLevel:(GameLevel*) level{
std::vector<LevelObject*>::iterator it;
for (it = level->getLevelObjects()->begin() ; it != level->getLevelObjects()->end(); ++it) {
CCSprite* sprite = it->sprite; //Here XCode complaints about "Member reference base type 'LevelObject *' is not a structure or union" and "Use of undeclared identifier 'sprite'". I cannot seem to access any of the objects variables/methods from it->
だから私が尋ねる質問は:これはポインタのベクトルへのポインタを使って、これへの良い方法ですか?そして、なぜ反復が機能しないのですか?
ありがとう :)
編集:getLevelObjects()は次のとおりです。
std::vector<LevelObject*>* getLevelObjects(){return levelObjects;}