Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 捕捉'的等价物;这';在静态函数的lambda中_C++_C++11_Static_Lambda - Fatal编程技术网

C++ 捕捉'的等价物;这';在静态函数的lambda中

C++ 捕捉'的等价物;这';在静态函数的lambda中,c++,c++11,static,lambda,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(

我有一门课看起来像这样:

class MyClass {
    static Microsoft::WRL::ComPtr<ID3D11VertexShader> vertexShader;
    static void Setup(Device* device) {
        auto createVSTask = loadVSTask.then([this, device]() {
            DX::ThrowIfFailed(
                device->CreateVertexShader(&vertexShader));
    }
}
class-MyClass{
静态Microsoft::WRL::ComPtr vertexShader;
静态无效设置(设备*设备){
auto createVSTask=loadVSTask。然后([这个,设备](){
DX::ThrowIfFailed(
设备->CreateVertexShader(&vertexShader));
}
}

我不能在lambda中使用
,因为函数是静态的。我应该使用什么来代替呢?

您不需要捕获
,就可以访问
vertexShader
…它已经可以访问。您只需要捕获
设备

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

您无需捕获
即可访问
vertexShader
…它已经可以访问。您只需捕获
设备

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

您无需捕获
即可访问
vertexShader
…它已经可以访问。您只需捕获
设备

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

您无需捕获
即可访问
vertexShader
…它已经可以访问。您只需捕获
设备

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

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

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

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

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

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

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

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

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


@Barry这只是我忘了在代码中包含的某个参数。为什么你认为你需要捕获一个类似的
这个
静态
变量和全局变量可以直接从lambdas访问,甚至是无状态的lambdas。@BenVoigt我可能把一个错误误认为是其他错误。发生的是
vertexShader最终为空,尽管我刚刚从非静态上下文复制了代码。如果它应该可以工作,那么我将进一步研究它,谢谢。@idlackage:看起来你在使用任务库……可能智能指针保持
null
,因为任务还没有运行到完成,并且
CreateVertexShader
hasn实际上没有被调用…也就是说,如果你一开始就开始运行任务的话。最后看起来我完全忘记了静态变量和异步任务是如何工作的,我自己也很困惑。我得到的错误显然与此无关。谢谢大家提醒我。(是的,这是初始化VertexShader的代码)@Barry这只是我忘了在代码中包含的某个参数。为什么你认为你需要捕获一个类似的
这个
静态
变量和全局变量可以直接从lambdas访问,甚至是无状态的lambdas。@BenVoigt我可能把一个错误误认为是其他错误。发生的是
vertexShader最终为空,尽管我刚刚从非静态上下文复制了代码。如果它应该可以工作,那么我将进一步研究它,谢谢。@idlackage:看起来你在使用任务库……可能智能指针保持
null
,因为任务还没有运行到完成,并且
CreateVertexShader
hasn实际上没有被调用…也就是说,如果你一开始就开始运行任务的话。最后看起来我完全忘记了静态变量和异步任务是如何工作的,我自己也很困惑。我得到的错误显然与此无关。谢谢大家提醒我。(是的,这是初始化VertexShader的代码)@Barry这只是我忘了在代码中包含的某个参数。为什么你认为你需要捕获一个类似的
这个
静态
变量和全局变量可以直接从lambdas访问,甚至是无状态的lambdas。@BenVoigt我可能把一个错误误认为是其他错误。发生的是
vertexShader最终为空,尽管我刚刚从非静态上下文复制了代码。如果它应该可以工作,那么我将进一步研究它,谢谢。@idlackage:看起来你在使用任务库……可能智能指针保持
null
,因为任务还没有运行到完成,并且
CreateVertexShader
hasn实际上没有被调用…也就是说,如果你一开始就开始运行任务的话。最后看起来我完全忘记了静态变量和异步任务是如何工作的,我自己也很困惑。我得到的错误显然与此无关。谢谢大家提醒我。(是的,这是初始化VertexShader的代码)@Barry这只是我忘了在代码中包含的某个参数。为什么你认为你需要捕获一个类似的
这个
静态
变量和全局变量可以直接从lambdas访问,甚至是无状态的lambdas。@BenVoigt我可能把一个错误误认为是其他错误。发生的是
vertexShader最终为空,尽管我刚刚从非静态上下文复制了代码。如果它应该可以工作,那么我将进一步研究它,谢谢。@idlackage:看起来你在使用任务库……可能智能指针保持
null
,因为任务还没有运行到完成,并且
CreateVertexShader
hasn实际上没有被调用……也就是说,如果你一开始就开始运行任务的话。最后,看起来我完全忘记了静态变量和异步任务是如何工作的,并且感到困惑