相关疑难解决方法(0)

没有可以捕获托管变量的lambdas的解决方法

在C++/CLI中,您无法创建托管lambda(就像在C#中一样),因此无法捕获托管变量.您可以创建常规方法(而不是lambdas),但仍然无法捕获托管变量.

是否有在C++/CLI代码中使用的标准解决方法?换句话说,我正在寻找一种可以在C++/CLI中使用的标准模式来从C#执行以下操作:

class A { }

class B
{
    void Foo()
    {
        A a = new A();
        Func<A> aFunc = () => a; // Captures a
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以

  • 为我想要捕获的每个变量创建一个成员变量,然后在委托中使用该成员变量.这在一般情况下不起作用,因为您可能有两个方法的调用想要处理不同的捕获的a,但它适用于常见情况.
  • 创建一个嵌套类,在其ctor中执行捕获,然后使用此嵌套类的方法作为委托.这应该适用于一般情况,但这意味着每次我想捕获不同的变量时我都需要一个嵌套类.

问题:是否有比上述更好的选择,或者上面哪个选项是您的首选方法?

相关问题:

c++-cli

10
推荐指数
2
解决办法
5892
查看次数

标签 统计

c++-cli ×1