나는 c.drive()
전화 run
원하는 :멤버 함수에서 펑터를 만드는 방법은 무엇입니까?
#include <functional>
using namespace std;
struct Car {
void drive() { }
};
template <typename Function>
void run(Function f) {
f();
}
int main() {
Car c;
run(bind1st(mem_fun(&Car::drive), &c));
return 0;
}
이 컴파일되지 않고 오류 메시지가 나에게 도움이되지 않습니다 : F()에서
: (표준 '에 호출
전혀 일치 :: binder1st < 표준 : 하여금 mem_fun_t 무효 <, 자동차 > >)() '
전화에서 실행합니다 :
없음 n을 입력합니다 에서 아메드 'first_argument_type이라고' '클래스 표준 : : 하여금 mem_fun_t < 무효, 자동차 >'
에 'second_argument_type'라는 이름의 유형 '클래스 표준 : : 하여금 mem_fun_t < 자동차 > 무효'
없음 부스트하시기 바랍니다.
업데이트 : 문제가 해결 되더라도 업데이트 : TR1/
허용하는 당신이 기꺼이 TR1 및/또는 C++ 0x에서 'bind'(등)? –
예, 분명히 관심이 있으니 게시하십시오! 그러나 순수한 C++ 03에서 최종 솔루션이 필요합니다. – Ali
당신은 오직 이런 식으로하고 싶습니까, 아니면 당신의 동기는 어떤 식 으로든'c.drive()'를 호출하는'run'을 호출하는 것입니다 (즉, 부스트를 사용하지 않고). – Mahesh