Add a public function to B:
virtual B* Clone() = NULL;
B's subclasses must implement this (pure virtual function). Here's an example:
B header:
virtual B* Clone() = 0; //public
B1 header:
virtual B* Clone();
B1 cpp:
B* B1::Clone()
{
return new B1(*this);
}
A:
A::A(const A& object) : member(object.member->Clone()) {
}