【发布时间】:2020-10-27 16:38:23
【问题描述】:
我有一个本地类,它接收一个 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;
}
甚至可以捕获 this 变量吗?我不能真正改变 NativeClass 来传递接口或其他东西。
【问题讨论】:
标签: c++-cli managed-c++