编译boost信号2的问题

时间:2011-03-31 13:35:12

标签: 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;
};

1 个答案:

答案 0 :(得分:3)

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

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