C++c语言头文件件相关问题

关于C++头文件重复包含的问题.求解
[问题点数:40分,结帖人csshow]
关于C++头文件重复包含的问题.求解
[问题点数:40分,结帖人csshow]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2008年3月 Linux/Unix社区大版内专家分月排行榜第二
2012年9月 Linux/Unix社区大版内专家分月排行榜第三2007年6月 Linux/Unix社区大版内专家分月排行榜第三
2015年8月 C/C++大版内专家分月排行榜第三2015年5月 C/C++大版内专家分月排行榜第三2015年3月 C/C++大版内专家分月排行榜第三2015年1月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。查看:1379|回复:5
使用vs2010,引入头文件时出现了重名的问题,具体错误如下图所示,希望可有高手解答,万分感谢!!
有人说使用以下方法可以,但是编译之后仍然是不行的。
#include &esrisystem.h&
#import &esrisystemui.olb& raw_interfaces_only raw_native_types no_namespace named_guids exclude( &OLE_HANDLE&, &OLE_COLOR&, &UINT_PTR& ) rename(&ICommand&, &esriICommand&) rename(&IProgressDialog&, &esriIProgressDialog&)
(119.35 KB)
(119.35 KB)
版规,发帖可获2无忧币
你这里#include和#import用一个即可吧
引用:原帖由 向立天 于
13:25 发表
你这里#include和#import用一个即可吧 试了一下,还是这样呀!!
版规,回帖可获2无忧币
esrisystemui.olb的路径正确么
引用:原帖由 向立天 于
08:56 发表
esrisystemui.olb的路径正确么 是正确的,目前最新的情况是这样的(可以留下QQ交流一下吗?):
(245.13 KB)
版规,发帖可获2无忧币
上班聊QQ不方便
而且我也只能建议
没用过esrisystemui
跟没见过你这种问题C++头文件相互包含的问题
[问题点数:100分,结帖人return_zero]
C++头文件相互包含的问题
[问题点数:100分,结帖人return_zero]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年11月 挨踢职涯大版内专家分月排行榜第二2011年9月 Linux/Unix社区大版内专家分月排行榜第二
2012年1月 Linux/Unix社区大版内专家分月排行榜第三2011年8月 C/C++大版内专家分月排行榜第三2011年8月 Linux/Unix社区大版内专家分月排行榜第三2010年4月 C/C++大版内专家分月排行榜第三
2011年9月 C/C++大版内专家分月排行榜第二2011年4月 C/C++大版内专家分月排行榜第二2010年11月 C/C++大版内专家分月排行榜第二
2011年6月 C/C++大版内专家分月排行榜第三
2011年9月 C/C++大版内专家分月排行榜第二2011年4月 C/C++大版内专家分月排行榜第二2010年11月 C/C++大版内专家分月排行榜第二
2011年6月 C/C++大版内专家分月排行榜第三
2011年9月 C/C++大版内专家分月排行榜第二2011年4月 C/C++大版内专家分月排行榜第二2010年11月 C/C++大版内专家分月排行榜第二
2011年6月 C/C++大版内专家分月排行榜第三
2011年9月 C/C++大版内专家分月排行榜第二2011年4月 C/C++大版内专家分月排行榜第二2010年11月 C/C++大版内专家分月排行榜第二
2011年6月 C/C++大版内专家分月排行榜第三
2013年6月 Linux/Unix社区大版内专家分月排行榜第二2013年5月 Linux/Unix社区大版内专家分月排行榜第二2013年3月 Linux/Unix社区大版内专家分月排行榜第二2013年1月 Linux/Unix社区大版内专家分月排行榜第二2012年12月 Linux/Unix社区大版内专家分月排行榜第二2012年8月 Linux/Unix社区大版内专家分月排行榜第二2011年12月 Linux/Unix社区大版内专家分月排行榜第二2011年10月 C/C++大版内专家分月排行榜第二2011年10月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 C/C++大版内专家分月排行榜第三2012年6月 PHP大版内专家分月排行榜第三2012年5月 C/C++大版内专家分月排行榜第三2012年3月 Linux/Unix社区大版内专家分月排行榜第三2012年2月 Linux/Unix社区大版内专家分月排行榜第三2011年11月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。解决C/C++&头文件相互包含&问题的方法
<img TYPE="face" src="/blog7style/images/common/sg_trans.gif" real_src ="/uc/myshow/blog/misc/gif/E___6814EN00SIGG.gif"
ALT="解决C/C++&头文件相互包含&问题的方法"
TITLE="解决C/C++&头文件相互包含&问题的方法" />&所谓超前引用是指一个类型在定义之前就被用来定义变量和声明函数。
类A和类B需要彼此互相引用,这样必然有一个类会先被定义,而另外一个类后被定义,这样在
先被定义的类引用后被定义的类的时候,就导致了所谓的超前引用。
超前引用导致的错误有以下几种处理办法:
使用类声明&&
在超前引用一个类之前,首先用一个特殊的语句说明该标识符是一个类名,即将被超前引用。其使用方法是:
&&&&&&&&&&
a)& 用class ClassB;声明即将超前引用的类名
&&&&&&&&&&
b)& 定义class ClassA
&&&&&&&&&&
c)& 定义class ClassB;
&&&&&&&&&&
d)& 编制两个类的实现代码。
上述方法适用于所有代码在同一个文件中。一般情况下,ClassA和ClassB分别有自己的头文件和cpp文件,这种方法需要演变成:
&&&&&&&&&&
a) 分别定义ClassA和ClassB,并在cpp文件中实现之
&&&&&&&&&&
b) 在两个头文件的开头分别用class ClassB;和class ClassA;声明对方
&&&&&&&&&&
c) 在两个cpp文件中分别包含另外一个类的头文件
&&& NOTE:这种方法切记不可使用类名来定义变量和函数的变量参数,只可用来定义引用或者指针。&&
使用全局变量&&&
由于全局变量可以避免超前引用,不用赘述。我的习惯是,把类对象的extern语句加在该类头文件的最后,大家喜欢怎样写那都没有什么大问题,关键是保证不要在头文件中胡乱包含。
使用基类指针。&&&
这种方法是在引用超前引用类的地方一律用基类指针。而一般情况下,两个互相引用的类并不涉及其基类,因此不会造成超前引用。以开始的例子说:在CMyDialog类中用CView*代替CMyView*,在CMyView类中用CDialog*代替CMyDialog*,这样必然不会造成超前引用。
说明:本文中,为了叙述方便,把class AC语句成为类AClass的声明,把class
AClass开始的对AClass的类成员变量、成员函数原型等的说明称为类的定义,而把在CPP中的部分称为类的定义。如果大家对这三个词有不同的理解,请按照自己的本意把这三个词换成相应的词来理解。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 c 头文件互相包含 的文章

 

随机推荐