정보
의 구성원이 아닌 :부스트 VS2010에서 : 기능 : 오류 C2039 : '기능':이 방법처럼, 매개 변수로 콜백을 전달하는 부스트 :: 기능을 사용하고 싶습니다 '부스트'
void ReadPacket(
boost::function<void (const boost::system::error_code&, Packet* p)> callback);
하고이를 사용
ReadPacket(boost::bind(
&ServerSession::storePacket,
this,
_1,
_2
));
를 콜백 체인 제가
callback(ec, packet);
,745 호출되면 결국
문제
난 그냥 디버그에 솔루션을 컴파일 한 모든 것을 내가
BasicSession.h(30): error C2039: 'function' : is not a member of 'boost'
BasicSession.h(30): error C2061: syntax error : identifier 'function'
BasicSession.h(30): error C2059: syntax error : ')'
BasicSession.h(30): error C2143: syntax error : missing ')' before ';'
위에서 언급 한 오류를 많이 가지고
하지만 에서
출시 OK ... 보인다 나는 혼란스럽고 실망 스럽다.제안
나는 boost::function
에서 다른 구문 거기 것으로 나타났습니다. 예 : boost::function0
또는 boost::function1
. 이것은 VS2010이 무언가를 지원하지 않기 때문에 만들어진 것입니다 (정확히 무엇인지 모르겠습니다)
맞습니까?
또한이 응용 프로그램을 가능한 이식성과 크로스 플랫폼으로 만들어야합니다.
부스트 1.47 및 VS2010
MSVC10은 * 가변 템플릿 *을 지원하지 않습니다. variadic 동작 (예 : bind)을 가짜로 만드는 것은 후드 아래에서 더러운 속임수를 사용해야합니다. –
@kerrekSB 그래서 ... 콜백 함수를 매개 변수로 전달하는 메서드를 사용하려면 어떻게해야합니까? ASIO에서했던 것처럼. – nix
좋은 생각이 아닙니다. 죄송합니다 :-) MSVC 관련 문제인 것 같습니다. 나는 그 컴파일러에 대한 경험이있는 누군가가 곧 유용한 것을 올릴 것이라고 확신한다! –