在構(gòu)造自己的類時(shí),有可能會(huì)碰到兩個(gè)類之間的相互引用問(wèn)題,例如:定義了類A類B,A中使用了B定義的類型,B中也使用了A定義的類型
例如:
類CGUICmd中調(diào)用了類CMainFrame。
類CMainFrame中調(diào)用了類CGUICmd。
//////////////////////////////////////////////////////////////////////////
/// GUICmd.h
#ifndef _GUI_CMD_H
#define _GUI_CMD_H
class CGUICmd
{
public:
CGUICmd(void);
~CGUICmd(void);
int Gui_GetMessage(HWND hWnd, SOCKET sService, int bBlocking, CMainFrame* pFrame);
public:
SOCKET sService;
};
//////////////////////////////////////////////////////////////////////////
/// main_frame.h
#ifndef _MAIN_FRAME_H
#define _MAIN_FRAME_H
class CMainFrame:public CXMLWnd
{
public:
CGUICmd m_cGuiCmd;
};
不能單純的再對(duì)方的源文件中互相包含頭文件。
較好的方式:
main_frame.h 中#include "GUICmd.h",
CGUICmd.h 中加入一行:class CMainFrame;
CGUICmd.cpp 中#include "main_frame.h"
//////////////////////////////////////////////////////////////////////////
/// main_frame.h
#ifndef _MAIN_FRAME_H
#define _MAIN_FRAME_H
#pragma once
#include "GUICmd.h"
//////////////////////////////////////////////////////////////////////////
/// GUICmd.cpp
#include "GUICmd.h"
#include "main_frame.h"
//////////////////////////////////////////////////////////////////////////
/// GUICmd.h
#ifndef _GUI_CMD_H
#define _GUI_CMD_H
class CMainFrame;
class CGUICmd
{
}