You can return an abstract class pointer – assuming B
is a concrete class derived from abstract class A
:
A * f() {
return new B;
}
or a reference:
A & f() {
static B b;
return b;
}
or a smart pointer:
std::unique_ptr<A> f() {
return std::make_unique<B>(...);
}