在静态函数中捕获lambda中等效的'this'

时间:2014-12-14 03:57:09

标签: 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,因为该函数是静态的。我该怎么用?

2 个答案:

答案 0 :(得分:2)

您不需要this指针来访问静态方法或变量。只需从捕获列表中删除this,代码即可运行。

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

答案 1 :(得分:1)

您无需捕获this即可访问vertexShader ...它已经可以访问。您所需要的就是捕获device

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