Alex Rivera | Logout

C++ Parent class calling a child virtual function

Asked 2008-10-23T23:58:34.203
12

I want a pure virtual parent class to call a child implementation of a function like so:

class parent
{
  public:
    void Read() { //read stuff }
    virtual void Process() = 0;
    parent() 
    {
        Read();
        Process();
    }
}
class child : public parent
{
  public:
    virtual void Process() { //process stuff }
    child() : parent() { }
}

int main()
{
   child c;
}

This should work, but I get an unlinked error :/ This is using VC++ 2k3

Or shouldn't it work, am I wrong?

Edit
Report

2 Answers

19

Title of the following article says it all: Never Call Virtual Functions during Construction or Destruction.

answered 2008-10-24T00:03:47.907
2

It's because your call is in the constructor. The derived class will not be valid until the constructor has completed so you compiler is right in dinging you for this.

There are two solutions:

  1. Make the call to Process() in the derived class's constructor
  2. define a blank function body for Process as in the following example:
class parent
{
  public:
    void Read() { //read stuff }
    virtual void Process() { }
    parent() 
    {
        Read();
        Process();
    }
}
answered 2008-10-24T00:02:58.673

Your Answer