20240815 C++头文件编译环问题
问题描述
https://stackoverflow.com/questions/34102953/how-to-solve-expected-class-name-before-in-qt-c
解决问题方式
你有一个循环依赖项: materials.h 包括 fictionsection.h 和 fictionsection.h 包括 materials.h。
由于头文件具有防止多次包含的例程 ( #ifndef FICTIONSECTION_H 和 #ifndef MATERIALS_H,这很好),当 material.h 包括 fictionsection.h,这个包括 material.h 同样,但由于您的多重包含保护,这绝对没有效果…结果是 fictionsection.h 没有得到 Materials 最后声明并拒绝声明 FictionSection 从中衍生出来!
您需要使用前向声明来解决此问题:
在
materials.h取代:
1由
1 class FictionSection;==并添加
#include "fictionsection.h"在materials.cpp===转发声明是解决此问题的常见做法。但是,即使没有出现此问题,前向声明仍然是一种很好的做法,因为它将加快编译速度。
评论
评论插件加载失败
正在加载评论插件