2017-10-27 9 views
-1

인수로 취한 함수를 void *을 다른 함수로 전달하고 싶습니다. 지금 나는 다음과 같은 코드가 있습니다인수를 void *로 반환하는 전달 함수

MyClass *MyClass::bind(std::function<void*(void *)> fun) { 
    this->value = fun(this->value); 
    return this; 
} 

valueMyClass 내부 void * 변수를, 난 내 기능 bind에 함수를 전달하는 방법을 알아낼 수 없습니다.
내가 오류

no viable conversion from '<overloaded function type>' to 'std::function<void *(void *)>' 

를 얻을이

auto *class = new MyClass(); 
class->bind(fooFunction); 

같은 기능의 그것에게 이름을 전달하려고 내가이 코드를 원하거나 쉽게 접근 방식을 무엇을 달성하기 위해 어떤 방법이 있나요 있다?

+3

문제는 표시된 코드가 아니라 표시하지 않기로 선택한 코드에 있습니다. 오류를 재생산하는 [MCVE]를 입력하고 그렇지 않으면 컴파일은 최소한이고 공유하십시오. 변수 이름은 불법이므로 의사 코드는 완전히 무관 한 이유로 코드 할 수 없습니다. – Yakk

답변

2

fooFunction의 오버로드가 두 개 이상 있습니다.

오버로드가 하나 뿐인 (서명과 일치하는) 함수 이름을 사용하십시오.

auto *bob = new MyClass(); 
bob->bind([](void*ptr)->void*{return fooFunction(ptr);}); 

및 포인터를 작동하는 상태 비 저장 람다 암시 적 캐스트에 의존 :

또는 람다에 포장.

+0

그래, 내가 함수 정의에 잘못된 형식을 썼다. 그래서 나는 코드에서 같은 이름을 가진 두 개의 함수를 가졌다. 나는 또 다른 질문이 있지만 앞으로 더 자세한 내용으로 새로운 질문을 할 것입니다. –