首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将非静态成员函数作为std::function传递

将非静态成员函数作为std::function传递
EN

Stack Overflow用户
提问于 2018-05-21 12:34:42
回答 1查看 2.1K关注 0票数 2

我也有类似的情况:

代码语言:javascript
复制
class A {
    void callingFunction() {
      calledFunction(passedFunction);
    }

    void calledFunction(std::function<void(int)> foo) {
    }

    void passedFunction(int arguments) {
    }
};

编译器错误是

代码语言:javascript
复制
error: invalid use of non-static member function

如何在不使passedFunction成为静态的情况下实现这一点?

这样做:

代码语言:javascript
复制
calledFunction(std::bind(&A::passedFunction, this);

创建此错误:

代码语言:javascript
复制
error:static assertion failed: Wrong number of arguments foor pointer-to-member

这是否意味着在传递callingFunction时必须提供passedFunction中的所有参数?这是不可能的,因为passedFunction的参数是在calledFunction中指定的

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-21 12:38:45

您可以编写一个捕获兰卜达 this,在该this上可以调用passedFunction

代码语言:javascript
复制
calledFunction([this](int v) { this->passedFunction(v); });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50449052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档