2

私の .h ファイル:

#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "GameData.h"
#import "PROBattleScene.h"

@interface PROBattleAI : NSObject {
    BattleType type;
    PROBattleScene *scene;
}

-(id)initWithType:(BattleType)_type andBattleInformation:(NSMutableDictionary*)_information andScene:(PROBattleScene*)_scene;
-(void)dealloc;
@end

しかし、その行でPROBattleScene *scene;、Xcode から不明な型名エラーが発生します。

ここで答えを試しました:xcode unknown type nameしかし、私はすでにそれを行っています(そして機能しません)。

なぜそれが起こっているのですか?既にファイルをインポートしていPROBattleScene.hますが、認識されないのはなぜですか?

編集:そして、PROBattleScene.h要求された内容:

#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "GameData.h"
#import "SimpleAudioEngine.h"

#import "PROBattleBackground.h"
#import "PROBattleAI.h"

@interface PROBattleScene : CCLayer {
    NSMutableDictionary *battleInformation;
    NSMutableArray *localPlayerPartyData;

    PROBattleBackground *background;

    CCNode *base;

    PROBattleAI *enemyAI;
}
+(CCScene*)scene;
-(id)init;
-(void)loadBattleInformation;
-(void)loadBGM;
-(void)loadBackground;
-(void)loadBase;
-(void)loadEnemyAI;
-(void)beginBattle;

@end
4

1 に答える 1

7

循環依存関係があります。PROBattleAI インポート PROBattleScene をインポートする PROBattleAI をインポートする PROBattleScene<zomg無限ループ>

@class PROBattleWhatever可能な限りヘッダーで使用してください。プロトコル定義またはスーパークラスのヘッダーのみをインポートします。

編集わかりました、上記の文言は完全に悪いものでした...そして誤解を招きます。これが(私が信じている)詳細な出来事です。PROBattleAI は PROBattleScene をインポートし、次に PROBattleAI をインポートします。次に PROBattleAI が PROBattleScene をもう一度インポートします (いずれかのファイルのコードに到達する前にすべて)。PROBattleScene は既にインポートされているため、今回のインポートでは無視されます。ファイルがスキップされたため、未定義の型エラーが発生します。

于 2012-07-21T17:45:58.557 に答える