Search code examples
c++abstract-class

returning an abstract class from a function


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


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