Здравствуйте, whirlwind_t, Вы писали:
_>Например,
_>_>class A {
_>public:
_> virtual void foo() = 0;
_>};
_>class B {
_>public:
_> A* a;
_>};
_>
_>Как написать конструктор копирования для B, чтобы каждый класс B владем своим экземпляром наследника A? Ведь мы не знаем, что будет наследоваться от A...
Через "виртуальный конструктор"...
struct A
{
virtual foo() = 0;
virtual A* clone() const = 0;
};
class B
{
A *a;
public:
...
B( const B& b ) : a(b.a->clone()) {}
...
};