C++/CLI 프로젝트가 있습니다. 이 C++/CLI 프로젝트에서 System :: Action/Func에서 C++ 호출 가능으로 변환 할 수있는 고통을 덜어주기위한 작은 도우미를 작성했습니다. 다음은 한 가지 전문화의 예입니다.System :: Action을 호출 할 수 없습니다.^
template<> struct Callable<void()> {
Callable(System::Action^ f) : func(std::move(f)) {}
Handle<System::Action> func;
void operator()() {
System::Action^ f = *func;
f();
}
};
그러나이 코드는 컴파일되지 않습니다. System::Action::Invoke
에 액세스 할 수 없으며 호출 할 수 없다고 알려줍니다.
C++/CLI에서 System::Action
을 어떻게 호출 할 수 있습니까?
'std :: move'는 포인터를 추적 할 때 쓸모가 없습니다. 여러분은 포인터의 복사본을 만들지 않을 것입니다. 그리고'Handle '은 가능하면 안된다. Handle '일 필요가있다. –
'Handle' 클래스가'gcroot'가 제공하지 않는 것은 무엇입니까? –
@BenVoigt : 방금 도착했습니다 (C++/CLI에서). 나는 형식이 지정되지 않은 GCHandle 만 알고있었습니다. 나는 네가 전능함과 내 맹목에 익숙하다는 것을 알고 있으므로 잠시 앉아 있으십시오. – Puppy