一个文件无法识别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类的定义,但是如果没有更多细节,这是不可能说的。我们可以通过删除不相关的代码来缩小错误的范围并将其发布吗?