是否可以在std :: vector中保留函数指针?并在迭代器循环中调用每个函数?
答案 0 :(得分:3)
是否可以将函数指针保存在
中std::vector
?
当然,只要它们都是同一类型:
void foo()
{
std::cout << "inside foo\n";
}
void bar()
{
std::cout << "inside bar\n";
}
void baz()
{
std::cout << "inside baz\n";
}
std::vector<void(*)()> fps { foo, bar, baz };
并在迭代器循环中调用每个函数?
完全没问题:
for (auto&& fp : fps)
{
fp();
}
答案 1 :(得分:1)
您可能还想考虑Boost Signals2库。您可以将任意数量的功能指针(AKA&#39;插槽&#39;)注册到一个&#39;信号&#39;并通过简单地调用“信号”来调用它们中的每一个。本身。该库负责管理函数指针列表,并根据需要迭代它们。