1
부스트 스레드 및 신호에 익숙해 지려고합니다. 따라서 클래스를 구현하는 매우 간단한 코드 (Class1)를 구현했습니다. 이 수업에서 신호 수신의 결과로 서비스를 제공하고 싶습니다. 이를 위해 난 그냥 신호 부스트 라이브러리를 이용하기 시작했다 그러나 나는이 오류가 무엇입니까 : 나는 GCC와 Eclipse 환경에서 컴파일 할 때부스트 스레드 + 신호 : mem_fn 오류, 비 정적 멤버 함수의 잘못된 사용
/home/andrea/libs/boost_1_50_0/boost/bind/mem_fn.hpp:359:22: error: invalid use of non-static member function
합니다. 싱글 톤에 문제가 있거나 인스턴스 메서드에 바인딩되어 있습니까? 여기
는 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
확인 : 오류 : 'a [boost :: _ bi :: storage2 :: a2_ [A1 = boost :: reference_wrapper , int I = 1]] ' –
Sindico
@Sili 그러면 실제 코드가 표시된 코드와 다를 수 있습니다. –