我有一个类看起来像这样:
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
,因为该函数是静态的。我该怎么用?
答案 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));
});
}