#include <iostream>
#include <string>
#include <map>

using namespace std;

class header
{
public:
    virtual void func(void)=0;
};

class func_1 : public header
{
public:
    virtual void func(void)
    {
        cout<<"func_1"<<endl;
    }
};

class func_2 : public header
{
public:
    virtual void func(void)
    {
        cout<<"func_2"<<endl;
    }
};

int main(void)
{
    map<string,header*> func= {make_pair("func_1",new func_1()),
                               make_pair("func_2",new func_2())
                              };

    func["func_1"]->func();
    func["func_2"]->func();

    delete func["func_1"];
    delete func["func_2"];

    return 0;
}
