包含问题 [英] A problem with include
本文介绍了包含问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
//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屋!
查看全文