一个文件无法识别C ++中的其他文件类

时间:2008-09-16 13:04:14

标签: c++ class header

我在“Particles.h”文件中有自己的类,类的实现在“Particles.cpp”中

我希望文件“Load.h”能够识别里面的类,所以我添加了行

#include "Particles.h"

并且文件无法识别它并且在过去一切正常(我没有在该类中进行任何更改)。

我该怎么办?

5 个答案:

答案 0 :(得分:2)

这听起来像是你的包含路径 - 编译器扫描的目录列表,以便找到你#include的文件 - 设置不正确。您使用的是哪种编译器?

答案 1 :(得分:1)

好吧,如果您列出了错误代码,那可能会有所帮助。在我的脑海中,您是否在Particles.h中有一些东西确保文件只包含一次?有两种方法可以做到这一点。第一个是使用#pragma一次,但我认为这可能是微软特有的。第二种是使用#define。 例如:

#ifndef PARTICLES_H 
#define PARTICLES_H

class CParticleWrapper
{
...
};

#endif

此外,除非您从Particles.h中的类派生或使用类的实例而不是指针,否则可以使用类的前向声明并跳过在头文件中包含头文件,将节省您的编译时间。

#ifndef LOAD_H
#define LOAD_H

class CParticleWrapper;

class CLoader
{
   CParticleWrapper * m_pParticle;

public:

   CLoader(CParticleWrapper * pParticle);
   ...
};  

#endif

然后,在Load.cpp中,您将包含particle.h文件。

答案 2 :(得分:0)

确保文件“Particles.cpp”还包含“Particles.h”,文件位于同一文件夹中,它们都是同一项目的一部分。如果您还分享了从编译器获得的错误消息,它将会有所帮助。

答案 3 :(得分:0)

Dev C ++,它使用GCC, 该行是:

Stone *stone[48];

它说:“在'*'标记之前预期的构造函数,析构函数或类型转换”。

答案 4 :(得分:0)

听起来你需要包含Stone类的定义,但如果没有更多细节就不可能说出来。您可以通过删除不相关的代码来缩小错误并发布吗?