Massimo Soricetti wrote:
> Hello,
>
> I'm trying to fix this little class:
> <code>
> #include <ifstream>
> #include <iostream>
> #include <iomanip>
>
> using namespace std;
>
> class iExeStream: ifstream
> {
> public:
> int GetDOSheader(void);
> DWORD GetDword(bool);
> WORD GetWord(bool);
> BYTE GetByte(void);
> int readPascalString(char *);
> };
> </code>
>
> I'm using BC++Builder 6.
> It compiles correctly, but when I launch the program it dies with a
> runtime error before even show the first program screen. I know ths
> behaviour is sometime caused by faults in static objects ctors, who are
> executed before the program starts, but no one of the iExeStream objects
> I use is static.
>
> With BCB6 debugger, after clicking OK on the error window it opens the
> "ios.h" header file??? o_O
There's nothing in the code you posted that seems like it would cause
such an error, but then again, you didn't post very much. Try to reduce
the problem to a minimal program that you could post here in its
entirety.
On the other hand, since classes default to private inheritance, your
deriving iExeStream from std::ifstream is probably poor design. Simple
composition would likely be better. See these FAQs:
http://www.parashift.com/c++-faq-lit....html#faq-24.2
http://www.parashift.com/c++-faq-lit....html#faq-24.3
Cheers! --M