jeudi 25 février 2016

Creation of a map of pointer to member function

I am trying to create a map composed of int and pointer to member function

class Factory
{
  public:
    typedef nts::IComponent *(*createFunction)(const std::string &value);
    Factory();
    ~Factory();
    nts::IComponent *createComponent(const std::string &type, const std::string &value);
  private:
    nts::IComponent *create4001(const std::string &value) const;
    nts::IComponent *create4013(const std::string &value) const;
    nts::IComponent *create4040(const std::string &value) const;
    nts::IComponent *create4081(const std::string &value) const;

    std::map<int, createFunction> map = {{4001, Factory::create4001},
                                        {4013, Factory::create4013},
                                        {4040, Factory::create4040}};
};

But I have this following error :

includes/Factory.hpp:24:68: error: could not convert ‘{{4001, ((Factory*)this)->Factory::create4001}, {4013, ((Factory*)this)->Factory::create4013}, {4040, ((Factory*)this)->Factory::create4040}}’ from ‘<brace-enclosed initializer list>’ to ‘std::map<int, nts::IComponent* (*)(const std::__cxx11::basic_string<char>&)>’
                                         {4040, Factory::create4040}};

Have any idea ?

Aucun commentaire:

Enregistrer un commentaire