使用指针获取函数C++的多个输出

Using a pointer to get multiple outputs of a function C++

本文关键字:输出 C++ 函数 指针 获取      更新时间:2023-10-16

我正在尝试使用指针从函数中获取多个输出。我传入一个指针(出于初始化目的指向 NULL),该函数填写该指针并返回其失败/成功值。

在指针传入的函数内部,一切都很好。它被初始化。然而,一旦我们走出去,旧的值就会被抛弃,它又不知何故又空了。

有一种感觉,我应该在这里使用正确数量的星号和与号,但我不太明白。

必填代码:

ID3D11Buffer* Vout;
g_pDxManager->CreateVertexbuffer(&Vout, vertexes); //This isn't getting changed

Inside CreateVertexBuffer()

HRESULT DxManager::CreateVertexbuffer(ID3D11Buffer** out, Vertex3p vertexes [])
{
    D3D11_BUFFER_DESC bufferDesc;
    bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
    bufferDesc.ByteWidth = (sizeof (Vertex3p1c) * 3);
    bufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
    bufferDesc.MiscFlags = 0;
    bufferDesc.Usage = D3D11_USAGE_DYNAMIC;
    D3D11_SUBRESOURCE_DATA initData;
    initData.pSysMem = vertexes;
    initData.SysMemPitch = 0;
    initData.SysMemSlicePitch = 0;
    HRESULT hr = m_pDxDevice->CreateBuffer(&bufferDesc, &initData, (ID3D11Buffer**) &out);
    if (hr == S_OK) g_pLogger->log("DxManager::CreateVertexbuffer(): Successful.", 1, false, false);
    return hr;
}
HRESULT hr = m_pDxDevice->CreateBuffer(&bufferDesc, &initData, (ID3D11Buffer**) &out);

最后一个参数应该只是out:没有 & 符号,也没有强制转换。

即上面的行应该是:

HRESULT hr = m_pDxDevice->CreateBuffer(&bufferDesc, &initData, out);