This is a simple example of a log file class I'm trying to develop.
Debug.h
Debug.cppCode:#ifndef DEBUG_H #define DEBUG_H #include <iostream> #include <fstream> class dbgBuf : public std::streambuf { private: std::streambuf* buffer; public: dbgBuf(std::streambuf * output_buffer); }; class dbgFile : public std::ostream { private: std::filebuf output_buffer; dbgBuf *indent_buffer; public: dbgFile(void); dbgFile(const char *path); ~dbgFile(void); }; #endif
main.cppCode:#include "Debug.h" dbgBuf::dbgBuf(std::streambuf * output_buffer) : buffer(output_buffer) { } dbgFile::dbgFile(void) { } dbgFile::dbgFile(const char *path) { if (output_buffer.is_open()) { output_buffer.close(); } if (output_buffer.open(path, std::ios_base::out)) { rdbuf(indent_buffer); } } dbgFile::~dbgFile(void) { if (output_buffer.is_open()) output_buffer.close(); }
Code:int main (int argc, char * const argv[]) { try { dbgFile dbg("/tmp/test.log"); dbg << "Hello, World!" << std::endl; } catch (...) { std::cerr << "Caught an exception" << std::endl; } return 0; }
This crashes on the dbg << "Hello world" line. Why I don't know...


Reply With Quote

Bookmarks