как создать карту со значением в виде указателя на шаблонную функцию - PullRequest
1 голос
/ 03 апреля 2020

Ниже код не компилируется, пожалуйста, помогите мне, где я скучаю. У меня есть функции-члены с различными типами возвращаемых данных, и мне нужно вызывать эти функции, просто передавая имя строки. Итак, я создал карту, ниже приведен пример, который соответствует моим требованиям, но я не могу скомпилировать.

template<typename T1>
shared_ptr<T1> GetBasicClassInfo()
{
    T1 obj;
    shared_ptr<T1> pobj( new T1);
    return pobj;
}

class BasicClass
{
  public:
     std::string GetValue()
     {
         return "Successfull";
     }
     int GetInt()
     {
         return 5;
     }
};

template<typename T>
std::map<std::string, std::function<T()>> GetPropertyValue ={
   {"int",&GetBasicClassInfo<BasicClass>()->GetInt},
   {"string",&GetBasicClassInfo<BasicClass>()->GetValue}
};

int main()
{
   cout<<GetPropertyValue["int"]()<<endl;
   cout<<GetPropertyValue["string"]();
    return 0;
}
...