ヘルパー関数のヘッダーのみのライブラリを自分で作成しようとしています。(私はブーストとSDLを使用していますが、ブーストの方がはるかに使いやすいので、自分のヘルパーライブラリ用にそれをエミュレートしたいと思います。)
クラスの1つで「タイプに名前を付けていません」というエラーが表示され、混乱します。スペルミスまたは循環インクルードでこの問題が発生する可能性があることはわかっていますが、コードでこれらの問題のいずれも見つかりません。SdlWindow.cppでの前方宣言は役に立ちません。ヘッダーを再度インクルードする(つまり、/ do /に循環インクルードを含める)ことも役に立ちません(「以前に定義された」エラーが発生します)。
Main.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.cppの「SdlWindow'は型に名前を付けていません」です。ここで、2つのSdlWindow関数を宣言します。これを引き起こしているのは何ですか?どうすれば修正できますか?
WindowsVistaのEclipseでmingw32のgccをコンパイルしています。