【问题标题】:c++ vector of pointers to functions with specific parametersc++ 指向具有特定参数的函数的指针向量
【发布时间】:2016-04-12 23:32:47
【问题描述】:

如果我有一个函数并且我想用一个特定的参数创建一个指向它的指针,我可以使用 auto 但像这样:

void bar(int n){std::cout << n;}
auto foo = std::bind(bar, 2);

但如果我想制作这些指针的向量,它就行不通

std::vector<auto> v;

【问题讨论】:

  • 您没有创建指向函数的指针。您正在创建一个绑定表达式。您不能(轻松)制作绑定表达式的容器,但您可以制作std::function&lt;void()&gt;的向量。
  • 你知道auto在这里是什么意思吗?

标签: c++ pointers vector auto


【解决方案1】:

你可以写vector&lt;decltype(foo)&gt; v;,尽管这可能不能达到你想要的效果(其他bind 表达式可能会给出不兼容的类型)。

如 cmets 中所述,std::function 就是为此目的而设计的:

std::vector< std::function<void()> > v;

v.emplace_back( foo );
v.emplace_back( std::bind(bar, 2) );
v.emplace_back( []{ std::cout << 2; } );

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    相关资源
    最近更新 更多