-2
在我的代碼中,我創建了兩個類,都有單獨的頭文件和類文件。標題A不能識別標題B?
所以在我的「player.h」頭,我有:
#ifndef PLAYER_H
#define PLAYER_H
#include "timer.h"
#include "funcs.h"
enum state{IDLE, RUN, JUMPRISE, JUMPFALL};
class Player
{
public:
Player(SDL_Renderer* renderer, SDL_Texture* charSheet, int x, int y, int movespeed, SDL_Rect dimensions);
void show(Timer animTimer);
void handle(const Uint8* keydown, SDL_Rect* rex, int numRex);
int getX();
int getY();
~Player();
private:
SDL_Renderer* m_renderer;
SDL_Texture* m_charSheet;
SDL_Rect m_coords;
int m_movespeed;
bool m_direction;
state animState;
SDL_Rect anim_left_run_clip[8];
SDL_Rect anim_left_idle_clip[8];
SDL_Rect anim_left_jumprise_clip[8];
SDL_Rect anim_left_jumpfall_clip[8];
SDL_Rect anim_right_run_clip[8];
SDL_Rect anim_right_idle_clip[8];
SDL_Rect anim_right_jumprise_clip[8];
SDL_Rect anim_right_jumpfall_clip[8];
};
#endif // PLAYER_H
我每次編譯,我得到一個錯誤說「錯誤:計時器還沒有被宣佈爲」在包含行:
void show(Timer animTimer)
我的「timer.h」文件沒有特別之處,我也不相信問題出在那裏。事情我已經檢查了:
- 「定時器」與「計時器」
- 包括「timer.h」在「player.h」頭文件
- 正確目錄的頂部,「計時器.h「文件
要麼我在某處忽略了一些明顯的錯誤,要麼我犯了一些我沒有意識到的編碼錯誤。
我懷疑一個循環'#include'問題:'player.h包含'timer.h','timer.h'包含'player.h'。沒有標題A包含標題B,也有標題B包含標題A.這些循環依賴關係通常不起作用。 –
很難說,看不到timer.h – fstd
是的,請顯示'timer.h'的實際外觀。 –