如何用成员函数初始化`std :: function`?

来了

我正在尝试学习std::function,这是我的代码:

#include <iostream>
#include <functional>

struct Foo {
    void print_add(int i){ 
      std::cout << i << '\n'; 
    }
};

typedef std::function<void(int)> fp;

void test(fp my_func)
{
  my_func(5);
}

int main(){
    Foo foo;
    test(foo.print_add);
    return 0;
}

编译器错误:

 error: cannot convert 'Foo::print_add' from type 'void (Foo::)(int)' to type 'fp {aka std::function<void(int)>}'
     test(foo.print_add);

我该如何进行这项工作,即如何将成员函数作为参数传递?

普雷托里亚人

print_add是的非静态成员函数foo,这意味着必须在的实例上调用Foo因此它有一个隐式的第一个参数,即this指针。

使用捕获foo实例并print_add在其上调用的lambda

Foo foo;
test([&foo](int i){ foo.print_add(i); });

另一个选择是用来std::bind绑定foo实例:

test(std::bind(&Foo::print_add, &foo, std::placeholders::_1));

现场演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用成员函数初始化`std :: function`?

来自分类Dev

在成员初始化列表中使用std :: function

来自分类Dev

new Function()如何初始化它

来自分类Dev

使用lambda初始化包含std :: function的类

来自分类Dev

为什么std :: function的初始化程序必须是CopyConstructible的?

来自分类Dev

如何使用模板化constexpr成员函数初始化constexpr std :: array?

来自分类Dev

比较成员函数的std :: function

来自分类Dev

C ++在初始化std :: function时如何将占位符绑定到reference / ref参数?

来自分类Dev

如何将成员函数绑定到std :: function?

来自分类Dev

如何将成员函数指针传递给std :: function

来自分类Dev

如何在std :: function中存储虚拟成员函数?

来自分类Dev

std :: function如何使指向成员函数的指针起作用?

来自分类Dev

如何将成员函数绑定到std :: function?

来自分类Dev

综合默认构造函数如何初始化已初始化的类成员?

来自分类Dev

<function-style-cast>错误:无法从“初始化列表”转换为“ std :: thread”

来自分类Dev

std :: vector类成员的初始化

来自分类Dev

值初始化std :: array成员?

来自分类Dev

std ::成员函数上的is_function吗?

来自分类Dev

对成员函数使用std :: function

来自分类Dev

python function:使用默认值初始化的函数参数的范围

来自分类Dev

如何用C ++ 11风格初始化此成员向量?

来自分类Dev

应该如何用C ++ 11样式初始化此成员向量?

来自分类Dev

从构造函数中的std :: istream初始化const类数据成员

来自分类Dev

如何在Cloud Function中初始化Firebase Admin SDK(Python)

来自分类Dev

如何初始化实例成员?

来自分类Dev

如何多态初始化`static`成员

来自分类Dev

使用成员函数初始化数据成员

来自分类Dev

使用成员函数初始化数据成员

来自分类Dev

成员初始化

Related 相关文章

  1. 1

    如何使用成员函数初始化`std :: function`?

  2. 2

    在成员初始化列表中使用std :: function

  3. 3

    new Function()如何初始化它

  4. 4

    使用lambda初始化包含std :: function的类

  5. 5

    为什么std :: function的初始化程序必须是CopyConstructible的?

  6. 6

    如何使用模板化constexpr成员函数初始化constexpr std :: array?

  7. 7

    比较成员函数的std :: function

  8. 8

    C ++在初始化std :: function时如何将占位符绑定到reference / ref参数?

  9. 9

    如何将成员函数绑定到std :: function?

  10. 10

    如何将成员函数指针传递给std :: function

  11. 11

    如何在std :: function中存储虚拟成员函数?

  12. 12

    std :: function如何使指向成员函数的指针起作用?

  13. 13

    如何将成员函数绑定到std :: function?

  14. 14

    综合默认构造函数如何初始化已初始化的类成员?

  15. 15

    <function-style-cast>错误:无法从“初始化列表”转换为“ std :: thread”

  16. 16

    std :: vector类成员的初始化

  17. 17

    值初始化std :: array成员?

  18. 18

    std ::成员函数上的is_function吗?

  19. 19

    对成员函数使用std :: function

  20. 20

    python function:使用默认值初始化的函数参数的范围

  21. 21

    如何用C ++ 11风格初始化此成员向量?

  22. 22

    应该如何用C ++ 11样式初始化此成员向量?

  23. 23

    从构造函数中的std :: istream初始化const类数据成员

  24. 24

    如何在Cloud Function中初始化Firebase Admin SDK(Python)

  25. 25

    如何初始化实例成员?

  26. 26

    如何多态初始化`static`成员

  27. 27

    使用成员函数初始化数据成员

  28. 28

    使用成员函数初始化数据成员

  29. 29

    成员初始化

热门标签

归档