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

时间:2020-03-05 18:55:51  来源:igfitidea点击:

我在文件" Particles.h"中有自己的类,而该类的实现在" Particles.cpp"中

我希望文件" Load.h"能够识别其中的类,因此我添加了这一行

#include "Particles.h"

并且该文件无法识别它,并且过去一切都很好(我没有在该类内进行任何更改)。

我该怎么办?

解决方案

回答

听起来include路径是编译器为了查找我们#include设置不正确的文件而扫描的目录列表。我们正在使用哪个编译器?

回答

确保文件" Particles.cpp"也包含" Particles.h"开头,并且文件位于同一文件夹中,并且它们都属于同一项目。如果我们还共享从编译器获得的错误消息,则将很有帮助。

回答

开发C ++,使用GCC,
该行是:

Stone *stone[48];

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

回答

好吧,如果我们列出了错误代码,则可能会有所帮助。在我的头顶上,Particles.h中是否包含某些文件,以确保该文件仅包含一次?有两种方法可以执行此操作。第一种是一次使用#pragma,但是我认为这可能是Microsoft特定的。第二种是使用#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文件。

回答

听起来我们需要包括Stone类的定义,但是如果没有更多细节,这是不可能说的。我们可以通过删除不相关的代码来缩小错误的范围并将其发布吗?