성공할 경우 0
을 반환하고 오류시에는 != 0
을 반환하는 C 스타일 함수가 있습니다.
void
으로 값을 반환하는 대신 throw
으로 "포장"하고 싶습니다.일반 함수 bind() with Boost
가 I이 도우미 쓴 :
function<void(float)> ntilt = bind(checkStatus, bind(tilt, _1));
ntilt(30); // this will call checkStatus(tilt(30))
을 그리고 그것은 잘 작동 :
다음void checkStatus(int status) {
if (status != 0)
// throw an error object
}
이 확정 기능 int tilt(float degrees)
을 포장하기를, 나는 boost::bind
를 사용합니다. 그러나 나는 헌정 래퍼 기능을 가지고 싶습니다, 그래서 나는 다만 수
function<void(float)> ntilt = wrap(tilt);
ntilt(30); // this will call checkStatus(tilt(30))
그것은 int
반환하는 모든 기능/서명 작동합니다.
부스트를 사용하여 가장 좋은 방법은 무엇입니까?
C++에서는 지루할 수도 있지만 C++ 11에서는 가변적 인 템플릿을 사용하여 쉽게이 작업을 수행 할 수 있습니다. – dchhetri
C++ 11을 사용하고 있지만 가능한 경우 C++ 솔루션에도 관심이 있습니다. . –
잠깐,'bind (checkStatus, bind (tilt, _1));'잘 동작합니까? –