在c++中,一个文件不能识别其他文件的类

我在文件' particles。h'中有自己的类类的实现在' particles。cpp'中

我想让文件'Load.h'识别里面的类,所以我添加了这一行

#include 'Particles.h'

和文件不识别它,在过去一切都是OK的(我没有在类内做任何更改)。

我该怎么办?

请先 登录 后评论

5 个回答

mrgroucho

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

请先 登录 后评论
Steve Obbayi

确保“Particles.cpp”文件也包含了“Particles.h”作为开始,这些文件在同一个文件夹中,它们都是同一个项目的一部分。如果您还共享从编译器获得的错误消息,则会有所帮助。

请先 登录 后评论
Community

开发c++,使用GCC,行是:

Stone *stone[48];

它说:"在'*'标记之前期望构造函数,析构函数,或类型转换"

请先 登录 后评论
CariElf

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

#ifndef PARTICLES_H 
#define PARTICLES_H

class CParticleWrapper
{
...
};

#endif

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

#ifndef LOAD_H
#define LOAD_H

class CParticleWrapper;

class CLoader
{
   CParticleWrapper * m_pParticle;

public:

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

#endif

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

请先 登录 后评论
Eclipse

听起来好像您需要包括Stone类的定义,但是如果没有更多的细节,就不可能这么说。你能通过删除不相关的代码来缩小错误的范围吗?

请先 登录 后评论