我有一个本机类,它接收std :: function作为参数,并在某个时间点调用此回调:
class Nativeclass
{
public:
Nativeclass(std::function<void(int,const char*)> callback) : m_callback{callback}
{
}
void Doaction()
{
...
m_callback(3,"asd");
...
}
private:
std::function<void(int,const char*)> m_callback;
}
比方说,这位于我无法控制的库中,因此std :: function是给定的。
现在我有一个C ++ / CLI类,我希望在其中调用此回调:
public ref class ManagedConsumer()
{
public:
ManagedConsumer()
{
m_nativeclass = new Nativeclass(std::bind(&ManagedConsumer::OnCallback,this); // errors: 3374,2672
m_nativeclass = new Nativeclass([this](...){this->OnCallback(...);}); // errors: 3374,2672
}
void OnCallback(int i,const char* str)
{
localInt += i; // must access local variable from this
// consume callback
}
private:
Nativeclass *m_nativeclass;
int localInt;
}
是否有可能捕获此变量?我真的不能更改Nativeclass来传递接口或其他一些东西。