需要帮助:"IntelliSense: data member initializer is not allowed"

Need Help: "IntelliSense: data member initializer is not allowed"

首先post 在这里,如果有什么不对的地方,我们深表歉意。 我一直在关注关于 C++ 和 directx11 的教程,我发现了一个在教程中没有复制的错误。示例代码在我创建的 header 中。 在 "private: " 部分,所有 3 行代码都给出了错误 "IntelliSense: data member initializer is not allowed".

#pragma once
#include "Window.h"
#include <d3d11.h>

class Renderer 
{
public:
    Renderer(Window& window);

private:
    //Errors here
    IDXGISwapChain* m_SwapChain = nullptr;
    ID3D11Device* m_device = nullptr;
    ID3D11DeviceContext* m_deviceContext = nullptr;
}

您不能在 class 定义中初始化数据成员。正确的做法是在CPP文件中:

IDXGISwapChain* Renderer::m_SwapChain = nullptr;
ID3D11Device* Renderer::m_device = nullptr;
ID3D11DeviceContext* Renderer::m_deviceContext = nullptr;

您也可以在构造函数中执行此操作,如下所示:

Renderer::Renderer(Window& window) :
    m_SwapChain(nullptr),
    m_device(nullptr),
    m_deviceContext(nullptr)
{
    // Initialization code here
}

我更喜欢后者