Mayor, Это уже не полиморфизм, а переопределение функции. Следовательно у тебя будет работать метод родительского класса.
мне не нужно переопределение функции:
под переопределением функции понимается выбор компилятором вызываемой функции в соответствии с передаваемым аргументом
мне нужно, что-то типа виртуального конструктора:
функция которая будет менять тип аргументов и результатов в зависимости от того какому классу принадлежит объект ее содержащий:
struct B : public A {};
pa f=f_factory(string("B"));
//тип f->ff B*(*pb::ff)(B*);
f=f_factory(string("A"));
//тип f->ff A*(*pa::ff)(A*);