开发者

C++ Inheritance, calling a derived function from the base class

How can I call a derived function from a base class? I mean, being able to replace one function from the base to the derived class.

Ex.

class a
{
public:
   void f1();
   void f2();
};

void a::f1()
{
   this->f2();
}

/* here goes the a::f2() definition, etc */

class b : public a
{
public:
   void f2();
};

/* here goes the b::f2() definition, etc */    

void lala(int s)
{
  a *o; // I want this to be class 'a' in this specific example
  swi开发者_如何学Ctch(s)
  {
   case 0: // type b
     o = new b();
   break;
   case 1: // type c
     o = new c(); // y'a know, ...
   break;
  }

  o->f1(); // I want this f1 to call f2 on the derived class
}

Maybe I'm taking a wrong approach. Any comment about different designs around would also be appreciated.


Declare f2() virtual in the base class.

class a
{
public:
       void f1();
       virtual void f2();
};

Then whenever a derived class overrides f2() the version from the most derived class will be called depending on the type of the actual object the pointer points to, not the type of the pointer.


Declare f2() as virtual.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜