【问题标题】:Problems compiling boost signal2编译升压信号2的问题
【发布时间】:2011-03-31 13:35:12
【问题描述】:

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

#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;
};

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 是否也可以将信号连接到任意成员函数?类似于:sig.connect(this->asdf());
    • @Allan:你需要 Boost.Bind:sig.connect(boost::bind(&amp;HelloWorld::asdf, this));
    猜你喜欢
    • 2014-04-29
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多