2
이 코드에 잘못된 것이 있습니까? 컴파일 오류가 계속 발생합니다. 기본적으로 void 반환 형식이 아닌 신호에 void 반환 함수를 연결하려고합니다. 부스트 버전 : 컴파일하는 동안 릴리스 1.46.1이 boost :: lambda :: bind 사용법의 문제점은 무엇입니까?
#include <boost/signals2.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/lambda/lambda.hpp>
using namespace boost::signals2;
void func()
{
printf("Func called!");
}
main()
{
signal<int(int)> sig;
sig.connect((boost::lambda::bind(func), 1));
}
나는 다음과 같은 오류가 발생합니다 :
/opt/include/boost/signals2/detail/slot_template.hpp: In member function ‘void boost::signals2::slot1<R, T1, SlotFunction>::init_slot_function(const F&) [with F = int, R = int, T1 = int, SlotFunction = boost::function<int(int)>]’:
/opt/include/boost/signals2/detail/slot_template.hpp:81:9: instantiated from ‘boost::signals2::slot1<R, T1, SlotFunction>::slot1(const F&) [with F = int, R = int, T1 = int, SlotFunction = boost::function<int(int)>]’
hello-world-example.cpp:13:51: instantiated from here
/opt/include/boost/signals2/detail/slot_template.hpp:156:9: error: invalid conversion from ‘int’ to ‘boost::function<int(int)>::clear_type*’ [-fpermissive]
/opt/include/boost/function/function_template.hpp:1110:14: error: initializing argument 1 of ‘boost::function<R(T0)>::self_type& boost::function<R(T0)>::operator=(boost::function<R(T0)>::clear_type*) [with R = int, T0 = int, boost::function<R(T0)>::self_type = boost::function<int(int)>]’ [-fpermissive]
감사합니다.