我会直接深入研究代码。我正在
“错误C2143:语法错误:缺少';'在'*'之前
和
错误C4430:缺少类型说明符 - 假设为int。注意:C ++没有 支持default-int
以下是我如何定义头文件,因为我认为头文件声明本身存在一些问题。我在我声明我的播放器对象指针的行上的Source.h文件中收到错误 - CPlayer * myplayer
首先,
Headers.h
#pragma once
#include <iostream>
#include <string>
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_mixer.h>
GameSetup.h
#pragma once
#include "Headers.h"
class CGameSetup
{
public:
CGameSetup(bool* _running,int ScreenWidth, int ScreenHeight);
~CGameSetup(void);
SDL_Window* GetWindow();
SDL_Renderer* GetRenderer();
void Begin();
void End();
private:
SDL_Window* _screen;
SDL_Renderer* _renderer;
};
Source.h
#pragma once
#include "Headers.h"
#include "GameSetup.h"
#include "Sprite.h"
#include <math.h>
#include "Player.h"
class CSource
{
public:
CSource(int ScreenWidth,int ScreenHeight);
~CSource(void);
void GameLoop();
CSprite* getPlayerSpriteReference();
SDL_Event getEventHandler();
int getMouseX();
int getMouseY();
private:
bool _running;
CPlayer* myplayer; // THIS IS WHERE I AM GETTING THE TWO ERRORS ON**
SDL_Event events;
CGameSetup* gameSetup;
CSprite* backgroundSprite;
int Mouse_X;
int Mouse_Y;
void Draw();
void Update();
};
Player.h
#pragma once
#include "Source.h"
namespace playerStates {
enum States {down=1,up,left,right,standing};
}
class CPlayer
{
public:
CPlayer(CGameSetup* gameSetup, int* p_MouseX, int* p_MouseY);
~CPlayer(void);
void playerMove();
void drawPlayerSprite();
CSprite* getPlayerSpriteReference();
private:
CSprite* playerSprite;
CGameSetup* gSetup;
SDL_Event events;
int* Mouse_X;
int* Mouse_Y;
int* newMousePos_X;
int* newMousePos_Y;
int currentTime;
bool movePlayer;
float GetDistance(float x1,float y1,float x2,float y2);
void SetPlayerState(int type);
};
这是我拥有的4个头文件。有人可以告诉我,如果在声明包含头文件时有任何问题,或者这些错误是否与我正在进行故障排除的其他事情有关!
答案 0 :(得分:4)
这里发生的事情是你的编译器进入Player.h
将其标记为“不要再回到此解析树”,然后遇到Source.h
。
在Source.h
中,您加入Player.h
但,编译器已将Player.h
标记为“不要回到这里”,以便跳过它。
当命中行CPlayer* myplayer;
时,编译器不知道CPlayer
是什么并抛出类型错误,因为它假定它是一个默认int
类型的名称。
解析树看起来像(简化):
CPlayer.h
-- Source.h
-- Cplayer.h -- Skipped, #pragma once
解决循环依赖关系将为您解决问题。