returning an abstract class from a function

abstract-class, c++

Solution

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>(...);
}

Problem

Is it possible to return an abstract class(class itself or a reference, doesn't matter) from a function?

Original source