头文件加宏才行,如下:
#ifndef _CLASS_B_H_INCLUDE_#define _CLASS_B_H_INCLUDE_
#pragma once
class B
{
public:
void Do()
{
int i = 0
}
}
#endif
(1)Core.h 中 #include 12Dlg.h ,(2)12Dlg.h中#include Core.h在包含头文件#include 12Dlg.h 时,也就是在定义Core之前就开始
Core core //这时还没有给出定义 懂了吗?
问题是再定义Core的完整定义给出前不能使用对象Core core
只能使用指针或引用,这是个常识。
头文件互相包含,肯定会出问题的。有个简单的解决办法,在头文件里不要包含对方的头文件,而用个类的前向声明就可以了。
比如,在parentdlg.h里,在类CParentDlg的定义前加个类的前向声明:
class CChildDlg //类的前向声明
class CParentDlg : public CDialog//CParentDlg的定义。
{
…………
在childdlg.h里,也这么做:
class CParentDlg //类的前向声明
class CChildDlg: public CDialog//CChildDlg的定义。
{
…………
而把#include "parentdlg.h"放到childdlg.cpp里,把#include "childdlg.h"也放到parentldlg.cpp里,在头文件里不要include。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)