Search code examples
c++factory-pattern

c++ factory pattern syntax


In this question, the accepted answer uses the following syntax:

typedef std::map<std::string, Base*(*)()> map_type;

Can someone explain what the (*) means, I've never seen it before?


Solution

  • It is a function pointer that returns a Base pointer and takes no arguments, e.g.

    struct Base {};
    
    Base* myfun() {
        return 0;
    }
    
    int main() {
        std::map<std::string, Base*(*)()> mymap;
        mymap.insert(std::make_pair("hello", myfun));
    }
    

    Example