here에서 가져온 다음 코드를 컴파일하려고하는데 컴파일 오류가 발생합니다. 누구든지 잘못된 아이디어가 있습니까?std :: function이 VS2012에서 컴파일되지 않습니다.
코드
#include <iostream>
#include <functional>
struct Foo {
Foo(int num) : num_(num) {}
void print_add(int i) const { std::cout << num_+i << '\n'; }
int num_;
};
int main()
{
// store a call to a member function
std::function<void(const Foo&, int)> f_add_display = &Foo::print_add;
Foo foo(314159);
f_add_display(foo, 1);
}
컴파일 오류 :
Error 1 error C2664: 'std::_Func_class<_Ret,_V0_t,_V1_t>::_Set' :
cannot convert parameter 1 from '_Myimpl *' to 'std::_Func_base<_Rx,_V0_t,_V1_t> *'
감사합니다.
사용하는 Xeo의 제안에 따라 편집 한 다음 작품은 지금
print_add'는 두 개의 인수를가', 그것이 _implicit_을'이를 this' 타입'Foo const *'의 인수도. –
@ K-ballo 오른쪽, 죄송합니다. – jogojapan
@ K-ballo :'std :: function'은 첫 번째 매개 변수 유형이 멤버의 클래스 유형에 대한 (참조/포인터) 클래스 인 경우 자동으로'std :: mem_fn'을 사용합니다. – Xeo