相关疑难解决方法(0)

传递并调用成员函数(boost :: bind/boost :: function?)

我有一个可能非常简单的问题:在类中传递并调用成员函数.我知道我想使用BOOST绑定(和/或函数),但我还没有真正掌握它的概念.

以下代码编译并执行问题.但是当我想将"f3"函数更改为非静态类函数时,乐趣就开始了:

#include <iostream>
#include <inttypes.h> 
#include <boost/bind.hpp>
#include <boost/function.hpp>

class Test
{
public:
  void f1();
private:
  void f2(void (*callfunc)(uint32_t));
  static void f3(uint32_t x);
};

void Test::f1(){
  f2(f3);
}

void Test::f2(void (*callfunc)(uint32_t)){
  (*callfunc)(42);
}

void Test::f3(uint32_t x){
  std::cout << "x: " << x << std::endl;
}

int main(int argc, char ** argv)
{
  Test ct;
  ct.f1();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在,改变之后

static void f3(uint32_t x);
Run Code Online (Sandbox Code Playgroud)

void f3(uint32_t x);
Run Code Online (Sandbox Code Playgroud)

编译器不满意并告诉我"错误:没有匹配函数调用'Test :: f2()'"

阅读了一些关于boost :: bind和boost :: function的SO帖子,我想我需要改变f2()的定义以及f1()如何调用f2()给f3()作为调用目标,但是除此之外......关于boost :: bind和boost函数的每个组合,我都试过很难编译.

我该如何写这个?作为一个额外的问题:是否有关于boost :: …

c++ boost-bind boost-function

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

boost-bind ×1

boost-function ×1

c++ ×1