“尝试使用正向类‘游戏’为‘MathGame’的超”在cocos2d(“Attempting to

2019-09-20 20:17发布

我正在做的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

我找不到任何有用的在线。 有任何想法吗?

Answer 1:

您只需导入周期:

  1. Game进口SplashScreenLayer
  2. SplashScreenLayer进口MathGame
  3. 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在实现文件的转发类!



Answer 2:

就我而言,我的用户XX类,并使用@class但不#IMPORT的.H file.and编译抱怨..



文章来源: “Attempting to use the forward class 'Game' as superclass of 'MathGame'” in Cocos2d