我正在做的cocos2d游戏iphone,我有我的主要游戏模式, Game
,从继承CCLayer
。
我想再拍游戏模式, MathGame
,从继承Game
,但是当我尝试编译,我得到这个错误MathGame.h
:
尝试使用正向类“游戏”为“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
#import "cocos2d.h"
#import <GameKit/GameKit.h>
@class SplashScreenLayer;
@interface Game : CCLayer
// A bunch of stuff
@end
The new game type:
// MathGame.h
#import "Game.h"
@interface MathGame : Game
@end
And the main menu that includes both:
// SplashScreen.h
#import "cocos2d.h"
#import "HowToPlayLayer.h"
#import "AboutLayer.h"
@class Game;
@class MathGame;
@interface SplashScreenLayer : CCLayer
// A bunch of stuff
@end
你的问题上面回答,让我从阅读着declerations和进口周期解释一些事情我已经知道了:
首先,去了解他们! 他们是Objective-C中的一个非常重要的一部分,你不想错过它!
其次,当你需要一个类私有变量或方法参数使用@class。 使用继承和强大性能的进口。
第三,不要忘记#import
在实现文件的转发类!
就我而言,我的用户XX类,并使用@class但不#IMPORT的.H file.and编译抱怨..
文章来源: “Attempting to use the forward class 'Game' as superclass of 'MathGame'” in Cocos2d