将元素插入 std::vector<void **(void*)>

Insert element into std::vector<void **(void*)>

我需要从定义为

的向量中插入和检索一个元素
std::vector<void **(void*)> array;

我要push_back的元素定义为:

void *element(void *)

最后,给定一个 void* data 我想按以下方式使用该元素:

array[i](data);

很遗憾,我找不到正确的调用方式array.push_back。
有人可以帮我解决这个问题吗?

这是一个返回 void** 的函数向量,这是不可能的。函数不是对象,不能将它们存储在向量中。

(函数类型作为模板类型参数是合法的,一些模板类型使用这些,例如 std::function 和一些类型特征......但是 std::vector 需要它的参数是一个对象类型)

尝试

std::vector<void* (*)(void*)>

创建一个函数指针向量。

那么你只需要

array.push_back(&element);