可能重複:
error: expected class-name before ‘{’ tokenC++預期類名 '{' 令牌類繼承
我有一個主要的超一流的遊戲對象和派生類GuiBitMapFont。它總是拋出預期的類名錯誤。但是,如果我將在GuiBitMapFont 類GameObject中添加前向推導;它拋出無效使用不完整類'class GameObject'和'class GameObject'的前向聲明。
編輯 是的,在GameObject文件中有#include GuiBitMapFont。但這是我寫這個問題時的錯誤。編譯器仍然會拋出這兩個錯誤。
#ifndef GAMEOBJECT_H
#define GAMEOBJECT_H
#include <string>
#include "Texture.h"
class GameObject {
private:
int x;
int y;
int width;
int height;
public:
GameObject();
GameObject(int x, int y, int width, int height);
GameObject(const GameObject& orig);
virtual ~GameObject();
virtual void draw();
virtual void update();
//ignore those, i need to rewrite it....
void setX(int x);
void setY(int y);
void setWidth(int width);
void setHeight(int height);
int getX() const;
int getY() const;
int getWidth() const;
int getHeight() const;
};
#endif /* GAMEOBJECT_H */
和派生
#ifndef GUIBITMAPTEXT_H
#define GUIBITMAPTEXT_H
#include <string>
#include "SDL.h"
#include "GameObject.h"
#include "BMF.h"
class GuiBitMapText : public GameObject { //error: expected class-name before '{' token
private:
std::string text;
BMF *font;
//SDL_Surface *surf;
SDL_Texture *texture;
public:
GuiBitMapText(int x, int y, std::string text, BMF *font);
GuiBitMapText(const GuiBitMapText& orig);
virtual ~GuiBitMapText();
virtual void draw();
virtual void update();
};
#endif /* GUIBITMAPTEXT_H */
@Zaraka曾經有在GameObject.h年初'的#include GuiBitMapText.h',和所有的答案和意見正確指出,這「包括」不應該存在。但是你似乎已經通過快速編輯刪除了它。爲什麼? – jogojapan
因爲它不應該在那裏它已被評論,沒有這條線,它仍然會拋出相同的錯誤 – Zaraka
請在這個帖子的**當前**源代碼發表評論,表示錯誤仍然發生在那裏的*確切*行,現在你改變了問題代碼,並有效地使每個以前正確的答案無效。 – WhozCraig