是否可以在容器中存储成员重载?

时间:2017-12-12 16:58:35

标签: c++ lambda stl overloading

我的问题很简单,但解决方案对我来说并不明显。

我希望在容器中获得一个重载集(在需要的情况下允许使用宏)。重载函数是成员函数。我想要这样的东西:

std::function<void (MyClass &, std::string const &)> myFuncs = 
{&MyClass::f1, &MyClass::f2};

我尝试了几件我现在不会发布代码的东西,但基本上,即使我需要一个重载来将重载集提升到仿函数中,我希望它能够工作。我知道如何使用自由函数来做到这一点,但我没有为成员函数做到这一点。有没有想过这是否可以通用的方式?

1 个答案:

答案 0 :(得分:0)

起初比我想象的容易:

我可以做以下事情:

//Choose overload
using MyFType = void (MyClass::*)(std::string const &);


static const MyFType funcs[] = {&MyClass::f1, &MyClass::f2};

这将转换为定义左侧给出的正确重载。