头文件的相互包含有关问题
头文件的相互包含问题
CTermSocket继承CAsyncSocket ,CTermView 继承 CEditView(视图类)
因为要调用对方的成员函数,于是我在CTermSocket头文件中#include "TermView.h" ,在CTermView头文件中#include "TermSocket.h",这样编译出错了。。。
于是我就在CTermSocket头文件中把这句#include "TermView.h" 去掉,改成class CTermView ,编译成功,但是我反过来的话(也就是在CTermView头文件中把这句#include "TermSocket.h" 去掉,改成class CTermSocket )就不行,为什么呀???
PS:程序是单文档的,那程序不就是先定义CTermView,再定义CTermSocket的吗???
难道程序是先定义CTermSocket再定义CTermView的??
这是怎么回事呀???
------解决方案--------------------
这跟你cpp文件里面的头文件包含顺序还有关系啊。
------解决方案--------------------
#pragma once
或者:
1.在你的CTermSocket头文件中随便定义一个宏,例如#define ABCD
2.在CTermView头文件中这样加载CTermSocket的头文件:
#ifndef ABCD
#include "TestZhengze.h"
#endif
3.在CTermSocket的头文件中直接加载CTermView.h即可。
CTermSocket继承CAsyncSocket ,CTermView 继承 CEditView(视图类)
因为要调用对方的成员函数,于是我在CTermSocket头文件中#include "TermView.h" ,在CTermView头文件中#include "TermSocket.h",这样编译出错了。。。
于是我就在CTermSocket头文件中把这句#include "TermView.h" 去掉,改成class CTermView ,编译成功,但是我反过来的话(也就是在CTermView头文件中把这句#include "TermSocket.h" 去掉,改成class CTermSocket )就不行,为什么呀???
PS:程序是单文档的,那程序不就是先定义CTermView,再定义CTermSocket的吗???
难道程序是先定义CTermSocket再定义CTermView的??
这是怎么回事呀???
------解决方案--------------------
这跟你cpp文件里面的头文件包含顺序还有关系啊。
------解决方案--------------------
#pragma once
或者:
1.在你的CTermSocket头文件中随便定义一个宏,例如#define ABCD
2.在CTermView头文件中这样加载CTermSocket的头文件:
#ifndef ABCD
#include "TestZhengze.h"
#endif
3.在CTermSocket的头文件中直接加载CTermView.h即可。