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