包含问题 [英] A problem with include

查看:125
本文介绍了包含问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

//Class1.h
#include "Class3.h"
class Class1 { ... };

//Class2.h
#include "Class1.h" // error C2504: 'Class1' : base class undefined
class Class2 : public Class1 { ... };

//Class3.h
#include "Class2.h"
class Class3 { ... };



我该如何解决.非常感谢.



How can I solve this. Thanks a lot.

推荐答案

那是因为您没有仔细阅读我的回复.

您需要从Class1.h中删除#include "Class3.h",并从Class3.h中删除#include "Class2.h".

-Saurabh
That is because you didn''t read my reply carefully.

You need to remove #include "Class3.h" from Class1.h and #include "Class2.h" from Class3.h.

-Saurabh


您具有循环依赖性.您可以使用前向声明将其删除.但是,对于前向依赖项,只允许头文件中的类指针.

You have cyclic dependencies. You can use forward declaration to remove them. However, with forward dependencies you are allowed only class pointers in the header file.

//Class1.h
class Class3; // Forward declaration.
class Class1
{
   ...
   
private:
   
   Class3* mClass3;
};

<br />

//Class2.h
#include "Class1.h" // Cannot use forward declaration because of inheritance.
class Class2 : public Class1 { ... };

<br />

//Class3.h
class Class2;  // Forward declaration.
class Class3
{
   ...
   
private:
   
   Class2* mClass2;
};



-Saurabh



-Saurabh


我尝试了
//Class1.h
#include "Class3.h"
class Class3;
class Class1 { ... };

//Class2.h
#include "Class1.h" // error C2504: ''Class1'' : base class undefined
class Class2 : public Class1 { ... };

//Class3.h
#include "Class2.h"
class Class2;
class Class3 { ... };


但这是行不通的.如上所示的错误C2504


but it doesn''t work. Error C2504 as shown above


这篇关于包含问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆