头文件中基于DirectX的结构体

DirectX based struct in header file

本文关键字:DirectX 结构体 文件      更新时间:2023-10-16

我对c++比较陌生,我正在尝试创建一个可以从多个c++文件访问的结构体。为此,我把它写在一个头文件中。然而,该结构体需要DirectX库中的标识符,即"xnamath.h"。

我的结构如下

struct Vertex
{
    Vertex(){}
    Vertex(float x, float y, float z,
        float u, float v)
        : pos(x,y,z), texCoord(u,v){}
        XMFLOAT3 pos;
    XMFLOAT2 texCoord;
};

我已经尝试在我的resource.h头文件中包含xnamath头文件,但这导致了比当前问题更多的错误。据我所知,所有文件都需要该结构体,因此不能在每个.cpp文件中重新定义。

任何帮助将非常感激,谢谢大家!

显然我没有足够的声誉来评论,所以这里有一些想法/问题:

    你有一个预编译头(如stdafx.h通常,或DXUT.h) ?如果是这样,也许把包含在那里将工作;
  • 如果你包含resource.h无处不在:文件有和ifndef声明吗?如果不是,则错误可能来自对同一结构体的多次声明。也许可以试试这样写:

    #ifndef _RESOURCE_H_
    #define _RESOURCE_H_
    // Includes you already had
    #include "xnamath.h"
    // Stuff you already had
    // Your vertex structure
    #endif