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