🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.os.os2.programmer.misc
Article #311

Re: C++ problem -- Over 30 people were unable to help me, can you?!

#311
From: idanan
Date: Sun, 18 Jan 1998 00:00
45 lines
2308 bytes
In <DlpnOhDvP3gv-pn2-zQX4fq1HhHLx@du36-2.ppp.algonet.se>, bjorn@algonet.se (Bjorn Fahller) writes:
>On Sat, 17 Jan 1998 00:51:46, NOSPAMsl@psycode.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@ibm.net
Technical Details
Message-ID: <34c233a4.0@news1.ibm.net>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <bWLoegW7sFse-pn2-d679pGp6mnys@portD23.Generation <DlpnOhDvP3gv-pn2-zQX4fq1HhHLx@du36-2.ppp.algonet.se>

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit
X-Google-Thread: 11318c,8dafc9e0bf3f0357
X-Google-Attributes: gid11318c,public
X-Google-Thread: 10891a,8dafc9e0bf3f0357
X-Google-Attributes: gid10891a,public
X-Google-Thread: 11307a,8dafc9e0bf3f0357
X-Google-Attributes: gid11307a,public
From: idanan@ibm.net
Subject: Re: C++ problem -- Over 30 people were unable to help me, can you?!
Date: 1998/01/18
Message-ID: <34c233a4.0@news1.ibm.net>
X-Deja-AN: 317099999
References: <bWLoegW7sFse-pn2-d679pGp6mnys@portD23.Generation <DlpnOhDvP3gv-pn2-zQX4fq1HhHLx@du36-2.ppp.algonet.se>
Reply-To: idanan@ibm.net
Organization: IBM.NET
Newsgroups: comp.os.os2.programmer.misc,gnu.gcc.help,comp.os.msdos.djgpp