hur.cn - 华软网

 热门搜索

关于头文件相互包含的问题

  作者:未知    来源:网络    更新时间:2011/9/28
C++">//stdafx.h文件
//这些都是basicclass.h中定义的类
extern class CBasicElem;
extern class COtherElem;
extern class CRsuElem;
extern class CSelfElem;

//basicclass.h文件
#pragma  once
#include "stdafx.h"

//DemonstrateView.cpp文件
#include "stdafx.h"
#include "Demonstrate.h"
#include "DemonstrateDoc.h"
#include "DemonstrateView.h"
#include "basicclass.h"
list<CBasicElem*> g_AllElem;

//Demonstrate.h文件
extern list<CBasicElem*> g_AllElem;


我现在就是想把basicclass.h中的类可以在另外的一个CCommunicate类中用,把list<CBasicElem*> g_AllElem弄成个全局的,也可以在CCommunicate类中操作。我现在出的错误是 error LNK2005的错误,
Communicate.obj : error LNK2005: "public: virtual void __thiscall CBasicElem::DrawVehicle(class CDC &,enum StatusType)" **************** already defined in DemonstrateView.obj
求指教,谢谢!
---华软 网友回答---
不要自己搞混了。
两个类:class A,class B
假如你想在A里边使用B,那么在A的头文件声明B(如:class B),然后在A的cpp文件里边保护B的头文件。
反之亦然。
---华软网友回复---
可以参考sdi程序中的

在view中

class CSnooperCntrItem;

class CSnooperView : public CRichEditView

---华软网友回复---
#pragma once
---华软网友回复---
保证全局变量只定义一次,其他地方都加extern
---华软网友回复---
得到一个教训,就是不要将几个类定义和实现都写到一个头文件中。。。      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。