C++ C++;:在命名空间中自动编译的结构

C++ C++;:在命名空间中自动编译的结构,c++,class,namespaces,header-files,C++,Class,Namespaces,Header Files,我使用d3dx9.h头能够使用许多Direct3D函数和数据类型。其中之一是“D3DXVECTOR3”。我偶然发现了一个奇怪的问题,我找不到原因: 我有两个文件,Link.h和Link.cpp。Link是一个静态类。在我的Link.cpp和Link.h中,我包含了d3dx9.h文件,如下所示: #ifndef D3DX9_INCLUDED #define D3DX9_INCLUDED #include <d3dx9.h> // Direct3D 9 #endif 现在,当我从这个类

我使用d3dx9.h头能够使用许多Direct3D函数和数据类型。其中之一是“D3DXVECTOR3”。我偶然发现了一个奇怪的问题,我找不到原因:

我有两个文件,Link.h和Link.cpp。Link是一个静态类。在我的Link.cpp和Link.h中,我包含了d3dx9.h文件,如下所示:

#ifndef D3DX9_INCLUDED
#define D3DX9_INCLUDED
#include <d3dx9.h> // Direct3D 9
#endif
现在,当我从这个类之外调用这个函数时,它总是给我错误

error C2027: use of undefined type 'Core::D3DXVECTOR3'
下面是我如何调用getVector函数的:

Core::Link::getVector();
即使D3DXVECTOR3不是“核心”的成员,我也会收到错误。在本课程之外,我以同样的方式加入了d3dx9.h


我用标准数据类型(如bool)尝试了完全相同的方法,效果非常好。为什么getVector将D3DXVECTOR3作为Core的子级返回?

静态结构D3DXVECTOR3 getVector()你需要发布链接.h代码。关键字>代码>静态<代码>在C++中有多个含义,不清楚“代码”>静态< /代码>的含义是通过张贴单行来实现的。另外,不需要指定
struct
——这是“C”的保留。我已经添加了相关的Link.h代码。我希望Link不是一个对象,而是一个我可以直接与之通信的类,这就是我将该类设置为静态的原因。以前我在没有指定<代码>结构> /CODE时一直出错,但是在尝试之后,它没有给我额外的错误,所以我删除了它。“静态类FoO”不是C++中的东西,不确定它是Windows扩展还是什么。我的坏!我仍然了解C++。我已经删除了static,它没有添加任何额外的错误。首先,声明(即类MumbleLink块)应该在头文件中,而不是在cpp文件中。此头文件将由希望使用此方法的其他代码包含。为简单起见,您可能还希望在那里定义方法(如中所示,编写调用该方法时将执行的代码)。第二,将该行放在Link.h中不会使其公开,这就是类声明中的“public”关键字所做的。
error C2027: use of undefined type 'Core::D3DXVECTOR3'
Core::Link::getVector();