c++ 如何在容器中的函数中使用成员函数

dfuffjeb  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(92)
class MyClass
{
public:
   void funcOne(int a, float b);
   void funcTwo(std::string);
   void funcThree();
};

字符串
我想创建一个容器来保存指向成员函数的指针。

std::unordered_map<int, std::function< void(/*FUNCTION ARGS*/)>> myMap;


由于每个成员函数都有不同的数量或参数和参数类型。我认为会有一些方法来指定函数使用可变参数模板.

hgc7kmma

hgc7kmma1#

每个函数都有不同的类型。你可以使用union,或者更好的std::variant来表示不同的类型。

std::unordered_map<int, std::variant<
     std::function<void(MyClass&, int, float)>,
     std::function<void(MyClass&, std::string)>,
     std::function<void(MyClass&)>
>> myMap;

字符串
有人能让我知道在注解/FUNCTION ARGS/的地方需要的定义吗?
std::function有魔法将void (MyClass::*)(FUNCTION ARGS)转换为void (MyClass&, FUNCTION ARGS)void (MyClass*, FUNCTION ARGS)。所以只需添加MyClass*MyClass&

相关问题