Hallo, ich verstehe nicht, was an meinem Code falsch ist.
Was läuft hier mit dem Funktionszeiger falsch?Code:#include <iostream> #include <string> #include <fstream> typedef bool (*BoolFnct) (void); BoolFnct NULLf_b=NULL; /* Class to handle a game */ class cEngine { private: BoolFnct loop_mod; //! function pointer to game content void handleEvents(); //! handle input and eevents void loop(); //! loop of the engine std::ofstream *enginelog; //! log file public: cEngine(BoolFnct lp); void addLogLine(const std::string txt="-1"); }; cEngine::cEngine(BoolFnct lp): loop_mod(NULLf_b), enginelog(NULL) { enginelog=new std::ofstream("log"); addLogLine("Init Window ..."); // ... addLogLine("Load Textures ..."); // ... loop_mod=lp; loop(); } void cEngine::handleEvents() { // if key ESC was pressed exiting the application } void cEngine::loop() { addLogLine("Starting loop!"); while (true)//(AppIsOpen()) { addLogLine("looping ..."); handleEvents(); if(loop_mod==NULLf_b) { std::cout << "Game loop is not defined!" << std::endl; return; } if(loop_mod()==false) // if it's in End-State leave loop { addLogLine("shuting down ..."); //App->close(); break; } } addLogLine("Leaving loop ..."); } void cEngine::addLogLine(const std::string txt="-1") { if(txt!="-1") { *enginelog << txt << std::endl; std::cout << txt << std::endl; } else { *enginelog << std::endl; std::cout << std::endl; } } cEngine *Eng; bool GameLoop(); int main() { Eng = new cEngine(GameLoop); Eng->addLogLine("Sucessfull tested."); return true; } bool GameLoop() { std::cout << "[I]It will follow an Error." << std::endl; Eng->addLogLine("This is a test."); //! hier kommt der Fehler std::cout << "[I]Ist the error still there?" << std::endl; }
Lesezeichen