C++ - Calling virtual function from constructor

Frank Schafer frank.schafer@setuza.cz
Fri Nov 16 01:18:00 GMT 2001


Eddy Ilg wrote:

> Hi,
>
> I have a question that regards C++. In my program I have a class with some
> virtual functions. One virtual Function does some initialization specific to
> the derived class. It looks someThing like this:
>
> class scmObject
> {
>   protected:
>     virtual void    construct()=0;
>   public:
>     scmObject();
> }
>
> scmObject::scmObject()
> {
>   ...
>   construct();
> }
>
> When I try to compile this I get:
> scmObject.cpp: In method `scmObject::scmObject(BRANCH *)':
> scmObject.cpp:50: abstract virtual `void scmObject::construct(BRANCH *)'
> called from constructor
>
> When I chage it like this I can compile it:
>
> class scmObject
> {
>   protected:
>     virtual void    construct()=0;
>     void     init();
> public:
>     scmObject();
> }
>
> scmObject::scmObject()
> {
>   ...
>   init();
> }
>
> void scmObject::init()
> {
>   construct();
> }
>
> Why can I not or how could I call a virtual function from the contstructor?
>
> Thanks
>
> Eddy

Hi,

seems you found the reason yoyrself ;-) ... and the early stage fault is ... (
see the C++ standard ) ... you CAN call any virtual function, but you CAN'T
call an abstract function ( the ...=0 ) from the constructor.

Regards
Frank
-------------- next part --------------
A non-text attachment was scrubbed...
Name: frank.schafer.vcf
Type: text/x-vcard
Size: 218 bytes
Desc: Card for Frank Schafer
URL: <https://gcc.gnu.org/pipermail/gcc-help/attachments/20011116/e1fdfe07/attachment-0001.vcf>


More information about the Gcc-help mailing list