Привет всем!
Допустим есть такая иерархия:
class A {
public:
virtual void do_it() {
std::cout << "a method " << std::endl;
}
};
class B : public A {
public:
virtual void do_it() {
std::cout << "b method " << std::endl;
}
};
class C : public B {
public:
virtual void do_it() {
std::cout << "c method " << std::endl;
}
};
Создаем объект класса и вызываем его метод:
A * a = new C();
a->do_it();
получаем "c method"
получить указатель типа (A*) легко:
A * a = new C();
a->A::do_it(); // "a method"
или
A * a = new C();
a = new A(*A)
a->do_it(); // "a method"
Каким образом привести указатель к типу B*?