Здравствуйте, <Аноним>, Вы писали:
А>virtual BaseSource& operator=(const BaseSource&) ?
если вы определите вирутальный оператор присваивания, то вам придется переопределять его в каждом наследнике (то есть, базовый алгоритм не возможно будет использовать без явного оверрайда), ибо
The assignment operator (=) is, strictly speaking, a binary operator. Its declaration is identical to any other binary operator, with the following exceptions:
It must be a nonstatic member function. No operator= can be declared as a nonmember function. It is not inherited by derived classes.
По-моему, лучше использовать обычные вирутальные методы.