Есть два класса-потомка (A и B) от общего базового абстракта P.
class P
{
int data;
virtual foo() = 0;
}
class A: public P
{
// no class specific data, only methods
virtual foo() { ++data; }
}
class B: public P
{
// no class specific data, only methods
virtual foo() { --data; }
}
Есть некий конкретный instance созданный как A.
P* p = new A;
Существует ли способ сменить класс объекта в p?
Я понимаю что стандартными способами — нет.
Но в принципе это задача смены одного указателя на vtbl у объекта.
Как бы это сделать путем "наименьшего хака"?
Вот такой вот вопрос.