我正在为iphone制作cocos2d游戏,我的主游戏模式是Game,它继承了CCLayer
我正在尝试制作另一个游戏模式MathGame,它继承自Game,但当我尝试编译时,在MathGame.h中会出现此错误:
试图使用前进类“game”作为“mathgame”的超类
即使MathGame的实现和接口为空,我也会得到错误。只有当我试图在另一个文件中包含MathGame.h时才会发生这种情况。
下面是游戏类的代码:

// Game.h
#import "cocos2d.h"
#import <GameKit/GameKit.h>
#import "SplashScreenLayer.h"

@interface Game : CCLayer
    // A bunch of stuff
@end

新游戏类型:
// MathGame.h
#import "Game.h"

@interface MathGame : Game
@end

主菜单包括:
// SplashScreen.h
#import "cocos2d.h"
#import "Game.h"
#import "MathGame.h"
#import "HowToPlayLayer.h"
#import "AboutLayer.h"

@interface SplashScreenLayer : CCLayer
    // A bunch of stuff
@end

我在网上找不到有用的东西。有什么想法吗?

最佳答案

您只需要一个导入周期:
Game导入SplashScreenLayer
SplashScreenLayer导入MathGame
MathGame导入Game
你的解决方案:
import留在MathGame中,并将其他导入更改为@class
总而言之:
//game.h游戏
#导入“cocos2d.h”
#导入
@类防溅层;
@界面游戏:cclayer
/一堆东西
@结束
新游戏类型:
//mathGame.h
#导入“game.h”
@接口MathGame:游戏
@结束
主菜单包括:
//splashscreen.h
#导入“cocos2d.h”
#导入“howtoplaylayer.h”
#导入“aboutlayer.h”
@课堂游戏;
@数学游戏课;
@界面飞溅屏蔽层:cclayer
/一堆东西
@结束
上面回答了您的问题,让我解释一下我从阅读到的有关远期减让和进口周期的一些知识:
首先,去看看他们!它们是Objto-C的一个非常重要的部分,你不想错过它!
第二,每当您需要该类时,就使用@类作为私有变量或方法参数。使用导入进行继承和强大的属性。
第三,在实现文件中不要忘记#import你转发的类!

10-08 00:03