私はブーストスレッドとシグナルに精通しようとしています。したがって、スレッドを実装するクラス(Class1)で構成されるこの非常に単純なコードを実装しました。このクラスで信号受信の結果としてサービスを提供してほしい。この目的のために、シグナルブーストライブラリの利用を開始したばかりですが、次のエラーが発生します。
/home/andrea/libs/boost_1_50_0/boost/bind/mem_fn.hpp:359:22: error: invalid use of non-static member function
gccを使用してEclipse環境でコンパイルしようとすると。シングルトンに何か問題がありますか、それともインスタンスメソッドへのバインドに問題がありますか?
これがClass1.cppです
#include "Class1.hpp"
#include <boost/thread.hpp>
#include <boost/date_time.hpp>
#include "Package1.hpp"
Class1::Class1(){
boost::thread thread(boost::bind(&Class1::classifierBehavior,this));
};
void Class1::classifierBehavior(){
service.run();
Package1Signals::getInstance()->signal1.connect(boost::bind(&Class1::method1, boost::ref(*this)));
};
void Class1::method1(Signal1 signal1){}
そしてPackage1.hpp
#ifndef PACKAGE1_HEADER
#define PACKAGE1_HEADER
#include <boost/signal.hpp>
struct Signal1{
int foo;
};
class Package1Signals{
private:
Package1Signals();
static Package1Signals * instance;
public:
boost::signal<void (Signal1)> signal1;
static Package1Signals * getInstance(){
if(!instance){
instance = new Package1Signals();
}
return instance;
};
};
#endif