c++ - 编译 boost 信号2的问题

标签 c++ boost boost-signals boost-signals2

为什么这个简单的示例无法编译,我该如何解决这个问题?

#include <iostream>
#include <boost/signals2/signal.hpp>

struct HelloWorld {
    HelloWorld() {
        i = 0;
    }

    void operator()() {
        std::cout << "I is: " << i++ << std::endl;
    }

    void setup () {
        sig.connect(this);
    }

    void run () {
        sig();
    }

    boost::signals2::signal<void ()> sig;

    private:
        int i;
};

int main()
{
  HelloWorld hello;
  hello.setup();
  hello.run();
  hello.run();
  hello.run();

  return 0;
};

最佳答案

您正在尝试连接到一个指针,这是不可能的。相反,您需要连接到对您的对象的引用:

void setup () {
    sig.connect(boost::ref(*this));
}

关于c++ - 编译 boost 信号2的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5500719/

相关文章:

c++ - 从 cmex SFunction 调用 mex 函数

c++ - 如何使用 QPainter 或 QPainterPath 使用一个形状或一组连接的形状在 Qt 中绘制自定义形状

c++ - Boost::signals2::signal::connect 的原型(prototype)是什么

c++ - 如何找出 nviews vector 的返回类型

c++ - 是否可以向 `boost::signal`添加一些条件

c++ - 包含 <map> 后的编译错误

C++/POSIX 如何以最有效的方式获取毫秒时间戳?

c++ - 用boost spirit 完全解码http header value

c++ - Boost 消息队列可以处理的最大大小?