C++ 中 可以将 不同类型的函数指针 放在 同一个vector中吗?

关注者
54
被浏览
27,027

10 个回答

如果参数数目和类型相同,而不同类型是指自由函数、成员函数、lambda等,那么可以用 std::function

如果都不一样,那么应该可用 C++17 的 std::variant std::any 去存储不同参数类型的 std::function。

可以的。

我以前弄过一个callback类来包装的,用于解耦回调函数的具体类型。不过有些繁琐,也要用到一些奇技淫巧。

简单点就是弄一个通用的基类和子类,传基类进去,在取出要用(发起回调)的时候,通过虚函数和模板,重新推演出来。