Re: Having trouble with streams....
joseph cook wrote:
On Aug 10, 1:05 pm, SpreadTooThin <bjobrie...@gmail.com> wrote:
This constructor is causing the application to crash on Mac OS X, in
xcode...
dbgFile::dbgFile(void) : std::ostream(0), output_buffer(),
indent_buffer(&output_buffer), isopen(false) {}
here is part of the class definition:
class dbgFile : public std::ostream {
private:
std::filebuf output_buffer;
dbgBuf indent_buffer;
std::stack<std::string> s;
int stack_level;
bool isopen;
}
I suspect that std::ostream(0) is the culprit, but not sure how to
tell...
A debugger would tell you.
Why are you initializing the ostream with 0? Don't you want it
default-constructed?
basic_ostream doesn't have a default constructor. Its only constructor
(in C++03) takes a pointer to a streambuf. Passing a null pointer is,
indeed, a coding error.
Be careful inheriting from std::ostream. You can't try and use this
class polymorphically.
Um, std::basic_ostream (ostream is basic_ostream<char>) is the base
class for all the standard library's stream types. It's intended to be
used as a base class for all stream types, including user-defined ones.
You haven't posted enough code to be able to say what is the first
thing crashing your code.
Well, maybe. But initializing an ostream subobject with a null pointer
is certainly not a good thing to do.
--
Pete
Roundhouse Consulting, Ltd. (www.versatilecoding.com) Author of
"The Standard C++ Library Extensions: a Tutorial and Reference"
(www.petebecker.com/tr1book)