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实际上没有被调用……也就是说,如果你一开始就开始运行任务的话。最后,看起来我完全忘记了静态变量和异步任务是如何工作的,并且感到困惑