main 외부에서 foo_를 전달할 방법이 있습니까? 나는 Functor에 관한 또 다른 질문에서 Boost에 관해 뭔가를 보았다. 그게 효과가있을 것 같습니다. 그 질문에 부스트가 언급 된 answer가 있습니다. 가능한 경우 부스트를 피하고 싶습니다.중첩 된 functor (C++) 전달하기
#include <iostream>
int main()
{
class foo {
public:
void operator()() {
std::cout << "Hello" << std::endl;
}
};
foo foo_;
foo_();
return 0;
}
'boost :: function'을 템플릿 매개 변수로 사용하는 것은 호출 할 수있는 것이 아니라 일반적인 호환 가능한 함수 프로토 타입입니다. 'foo'에 대해서는'void()'가 될 것입니다 - 인자를 취하지 않고 아무것도 반환하지 않는 함수의 서명. – sbi
@sbi : 시도해 보셨습니까? 'function'의 생성자는 여전히 템플릿이 될 것이고, 여전히 로컬 타입을 템플릿 매개 변수로 사용해야 할 것입니다. – UncleBens
@sbi : 'foo :: operator() '의 주소를 가져 가면 작동하지만 'boost :: function'에 Foo 객체를 저장할 수 없습니다. – Macke