Mail Archives: djgpp/1998/01/18/12:00:21
In <DlpnOhDvP3gv-pn2-zQX4fq1HhHLx AT du36-2 DOT ppp DOT algonet DOT se>, bjorn AT algonet DOT se (Bjorn Fahller) writes:
>On Sat, 17 Jan 1998 00:51:46, NOSPAMsl AT psycode DOT com (Gili) wrote:
>
>> Hi,
>>
>> I created a class called File() which inherites fstream() publically
>> (i.e. class File : public fstream)
>> I'd like to call fstream()'s constructor whenever File()'s constructor
>> is called. However, I have run into a major problem.
>> I can call the constructor in this way:
>> "
>> File::File(const char* name, int mode, int prot):
>> fstream(name, mode, prot)
>> {
>> <body goes here>
>> }
>> "
>>
>> However, I'd like to use exception-handling and that isn't possible
>> in the constructor initialization. What I'd like to do is to be able
>> to call the fstream() constructor from the body of File()'s
>> constructor. This would allow me to use exception-handling... However,
>> simply calling fstream() in the body seems to make C++ think I'm
>> creating an fstream() variable instead of calling the constructor.
>> Also, when I try using ::fstream() to call the constructor, the call
>> *seems* to work but my file does not open correctly (which it does
>> when fstream() is called from the constructor initialization.) Does
>> anyone have any idea how this problem could be solved?
[CUT]
C++ has a way of doing this. The proper syntax is:
File::File(const char* name, int mode, int prot) try :
fstream(name, mode, prot)
{
<body goes here>
}
catch (<exception class goes here>)
{
<exception handling code here>
}
- Itai
idanan AT ibm DOT net
- Raw text -