В следующем коде в функции set(int, int)
класса Base
я хочу назвать производную функцию класса showK()
. Есть ли способ сделать это?Вызов функции производного класса из функции базового класса
Я не могу объявить showK()
функцию в классе Base
, и я не могу сделать это как виртуальное. Это ограничение для меня.
class Base{
int i, j;
public:
void set(int, int);
void show() { cout << i << " " << j << "\n"; }
};
void Base:: set(int a, int b)
{
i=a; j=b;
//Here I want to call the function showk() of class derived . Is there a way to call?.
}
class derived : public base {
int k;
public:
derived(int x) { k=x; }
virtual void showk() { cout << k << "\n"; }
};
int main()
{
derived ob(3);
ob.set(1, 2); // access member of base
ob.show(); // access member of base
ob.showk(); // uses member of derived class
return 0;
}
Заранее благодарен.
Так в чем проблема? – iehrlich
Почему вы не можете сделать 'showk' чистым виртуальным? –
Вы столкнулись с [принципом замещения Лискова] (http://en.wikipedia.org/wiki/Liskov_substitution_principle)? –