2014-10-01 83 views
1

是否可以将函数指针保存在std :: vector中?并在迭代器循环中调用每个函数?是否有可能将函数指针保存在std :: vector中?

编号:http://en.wikipedia.org/wiki/Function_pointer

+4

您的意思是问,如果有可能保持函数指针*在*载体?因为将函数指针*作为向量作为向量不是函数,所以没有任何意义。 – 2014-10-01 03:39:40

+1

是的。更多细节和例子在这里:http://stackoverflow.com/questions/23488326/c-stdvector-of-references – alpartis 2014-10-01 03:44:09

+0

@MattiVirkkunen技术上我想知道我们可以做到这一点? – Denny 2014-10-01 03:44:32

回答

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

您也可能要考虑的加速Signals2库。您可以将任意数量的函数指针(AKA'slots')注册到“信号”,并通过简单地调用“信号”本身来调用它们中的每一个。该库负责管理函数指针列表并根据需要遍历每个函数指针。

相关问题