Я пытаюсь написать библиотеку вспомогательных функций только для заголовков для себя. (Я использую boost и SDL, и boost намного проще в использовании, поэтому я хочу подражать этому для моей собственной вспомогательной библиотеки.)
Я получаю ошибку "Не называет тип" для одного из моих классов, и это меня смущает. Я знаю, что могу решить эту проблему с ошибкой или циклическим включением, но не могу найти ни одной из этих проблем в своем коде. Форвардное объявление в SdlWindow.cpp не помогает. Повторное включение заголовка (поэтому я / делаю / имею круговое включение) также не помогает (я получаю «ранее определенные» ошибки).
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 не называет тип» в SdlWindow.cpp, где я объявляю две функции SdlWindow. Что вызывает это и как я могу это исправить?
Я компилирую с gcc mingw32 в Eclipse в Windows Vista.