私はCocos2DとBox2Dのゲームに取り組んでいます。私はプレイヤーが異なるコントロールタイプを選択できるように、ゲームインターフェイスのクラスを作成しました。私は物理学のためにBox2Dを使用しているので、すべてのクラスは.mの代わりに.mmでなければならない - しかしHelloWorldLayer.hで新しいコントローラオブジェクトを定義すると、次のエラーが発生する:Objective-Cオブジェクト宣言でC++エラーが発生しましたか?
"ISO C++ Forbids 'タイプなしのSparkController'の宣言です。 と "期待しています"; ' '*'トークンの前に。
私はいくつかの記事を見つけました。そこでは、人々は同様のエラーを起こしましたが、すべてが非常に異なる状況でした。私はこれが、多くの異なる問題によって引き起こされる可能性のある一般的なエラーの1つであるという感覚を得る。
HelloWorldLayer.hのMy SparkControllerインスタンスの宣言は、次のようになります。エラーがポップアップところです:
SparkController *_controller;
C++のコードとしてこの行を解析しようとしているようなので、それはseeems? クラスSparkController.hとSparkController.mmは両方ともObjective-Cで完全に記述されていますが、クラスにBox2Dを含めなくてもいいので、必要ありません。 .mmが問題だったかどうかを確認するため、SparkController.mmを.mに変更しようとしましたが、コンパイラはあきらめる前に200のエラーを投げました。だから何が間違っているのか分かりません。問題を診断するためにここに投稿すると他にどのようなコードが役立つでしょうか?
編集:以下のすべてのコメントありがとうございます。残念ながらあなたの提案は一切働いていません。私は多分それは私が間違って何をやったかを指摘するのに役立ちます、SparkController.hのヘッダファイルをインクルードしています:それは場合に役立ちます
#import "cocos2d.h"
#import "HelloWorldLayer.h"
@interface SparkController : NSObject {
BOOL _drawPreviewLine;
CGPoint _touchStartLocation;
float _previewAngle;
float _sparkAngle;
CCParticleSystemQuad *_spark;
}
@property (nonatomic, assign) BOOL drawPreviewLine;
@property (nonatomic, assign) CGPoint touchStartLocation;
@property (nonatomic, assign) float previewAngle;
@property (nonatomic, assign) float sparkAngle;
@property (nonatomic, retain) CCLayer *layer;
//+(id)initWithLayer:(CCLayer *)layer;
@end
@interface GestureController : SparkController{
}
+(id)initWithLayer:(CCLayer *)layer;
-(void)touchBeganAt:(CGPoint)touchStartLocation;
-(void)touchMovedTo:(CGPoint)touchLocation;
-(void)touchEndedAt:(CGPoint)touchLocation;
@end
@interface HybridController : SparkController{
}
+(id)initWithLayer:(CCLayer *)layer;
@end
@interface TouchController : SparkController{
}
+(id)initWithLayer:(CCLayer *)layer;
@end
ここHelloWorldLayer.hの関連部分です:
#import "cocos2d.h"
#import "Box2D.h"
#import "MyContactListener.h"
#import "GLES-Render.h"
#import "SparkController.h"
// HelloWorldLayer
@interface HelloWorldLayer : CCLayer
{
...
SparkController *_controller;
}
'HelloWorldLayer.h'は' SparkController.h'をインポートしますか?また、 'SparkController.h'は' HelloWorldLayer.h'をインポートしますか? –
はい、はい。チェックしていただきありがとうございます:-) –