我正在尝试为自己编写一个仅包含标题的辅助函数库。(我正在使用 boost 和 SDL,而 boost 更容易使用,所以我想为我自己的帮助库模拟它。)
我的一个班级收到错误“没有命名类型”,这让我很困惑。我知道我可以通过拼写错误或循环包含来解决这个问题,但在我的代码中找不到这些问题。SdlWindow.cpp 中的前向声明没有帮助。再次包含标题(所以我 /do/ 有一个循环包含)也无济于事(我得到“先前定义的”错误)。
主要.cpp:
#include <WBS/SdlWindow.hpp>
int main(int argc, char **argv) {
WBS::SdlWindow myWindow("Test window", 640, 480);
return 0;
}
SdlWindow.hpp:
#ifndef SDLWINDOW_HPP_
#define SDLWINDOW_HPP_
#include <string>
#include <SDL/SDL.h>
namespace WBS {
class SdlWindow {
public:
//Member Variables
SDL_Surface *screen;
int xSize;
int ySize;
//Constructor and Destructor
SdlWindow(std::string title, int xSize, int ySize);
virtual ~SdlWindow();
//Member Functions
};
}
#include "SdlWindow.cpp"
#endif /* SDLWINDOW_HPP_ */
和 SdlWindow.cpp:
#include <string>
namespace WBS {
SdlWindow::SdlWindow(std::string title, int xSize, int ySize) {
this->xSize = xSize;
this->ySize = ySize;
SDL_Init(SDL_INIT_VIDEO);
screen = SDL_SetVideoMode(xSize, ySize, 32, SDL_ANYFORMAT);
SDL_WM_SetCaption("Simple Window", "Simple Window");
}
SdlWindow::~SdlWindow() {
SDL_FreeSurface(screen);
SDL_Quit();
}
}
我得到的错误是“SdlWindow'没有命名类型”,在 SdlWindow.cpp 中,我声明了两个 SdlWindow 函数。是什么原因造成的,我该如何解决?
我在 Windows Vista 上的 Eclipse 中使用 mingw32 的 gcc 进行编译。