c++ - 在静态函数的 lambda 中捕获相当于 'this' 的值

标签 c++ c++11 static lambda

我有一个看起来像这样的类:

class MyClass {
    static Microsoft::WRL::ComPtr<ID3D11VertexShader> vertexShader;
    static void Setup(Device* device) {
        auto createVSTask = loadVSTask.then([this, device]() {
            DX::ThrowIfFailed(
                device->CreateVertexShader(&vertexShader));
    }
}

我不能在 lambda 中使用 this 因为函数是静态的。我应该改用什么?

最佳答案

您不需要this 指针来访问静态方法或变量。只需从您的捕获列表中删除 this,代码就会起作用。

static void Setup(Device* device) {
        auto createVSTask = loadVSTask.then([device]() {
            DX::ThrowIfFailed(
                device->CreateVertexShader(&vertexShader));
    }

关于c++ - 在静态函数的 lambda 中捕获相当于 'this' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27466199/

相关文章:

c++ - 使 v8 对象属性和方法对 JS 可见

c++ - 使用 Eigen::Cholmod Supernodal LLT 时如何提取 matrixyL() 和 matrixU()?

c++ - 返回本地对象右值引用,对还是错?

c++ - 为什么右值引用参数与重载决策中的 const 引用匹配?

java - 在初始化静态变量期间调用 Singleton EJB

memory-management - 在内存管理上下文中,静态堆栈和动态堆栈有什么区别

ios - iOS静态库中的单例类方法

c++ - 堆栈与缓存友好分配器

c++ - 从 arduino 读取到 c++ 程序时保持接收 NULL

c++ - GMock,调用 SaveArg 捕获的 std::function