std::function
파생 된 인수로 바인딩하려고합니다. 기능 내가 바인딩 할은 다음과 같습니다파생 클래스로 인수가있는 함수 바인딩
void Storage::register(int number, std::function<void(Base *base)>) { }
그리고이이 (this
키워드를하고있는 중이 야 : 나는 (그러나 바운드)이 함수에 전달하는 데 노력하고
void Application::myFunction(Derived *derived) { }
기능은 다음과 같습니다
myStorage->register(0, std::bind(&Application::myFunction, this, std::placeholders::_1);
그러나 그것은 나에게 오류 제공 : 문맥 Application
)입니다
error: no matching function for call (Storage::register...)
내가 뭘 잘못하고 있는거야? 고맙습니다!
제시된대로 디자인이 잘못되었습니다. 바인드 연산의 결과가 '파생 된 *'이 아닌 'Base *'로 호출된다고 가정 해보십시오. 이것은 'Application :: myFunction'이라는 이름의'Base * '와 항상 동일 할 것입니다. 이는 항상 의미가있는 것은 아닙니다. 그래서, 정확히 무엇을하려고합니까? 왜 당신의 유스 케이스에는 이것이 문제가되지 않습니까? – Pradhan