需要帮助:"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
}
我更喜欢后者
首先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
}
我更喜欢后者