Hi,

I have created a base class who's constructor calls a pure virtual
function I derive this class, implement the function, compile and
receive this error message, "error: abstract virtual `IDXTYPE
DataSet<DATA, IDXTYPE>::indexFxn(uint) [with DATA = float, IDXTYPE =
float]' called from constructor"

Without context to my code basically reads, "error: abstract virtual
function called from constructor"

I know that it would not make sense for the base class to call a pure
virtual function. However, this constructor is being called in
response to a derived class of the base being initialized who defines
the pure virtual function of the base.

I can see how this error may happen if the constructor for the base
class is called before the derived class at which time the pointer to
the derived class' implementation of the base class' virtual function
is not initialized (I don't know for sure if this is the order of what
happens but it is my best educated guess). I don't see that this error
is necessary, unless the derived class does not implement the pure
virtual function of the base.  Even if this were the case, the derived
class could initialize the pointer table with it's implementation for
the base class pure virtual function before the base class constructor
call to the pure virtual function?

Is this behaviour a cause of the C++ standard or is it specific to GCC?


Thanks,
--
Brad

Reply via email to