我用MFC做界面,然后在窗口中有一个算法需要处理,算法涉及到结构体还有涉及该结构体的函数,我将结构体和涉及该结构体的函数定义在类之外(全局的),然后在窗口类中利用该结构体定义其他变量,还有调用涉及该结构体的函数时报错,貌似是不能识别该结构体。
后来参照书上的例程把结构体定义在窗口类的头文件中,再在头文件中对该函数做了静态声明,再在该类的cpp文件中对函数进行了定义,再之后就能运行了……
但是WHY??我很好奇,同样C能做到的事情,为什么C++是这样的???还望各位大侠不吝赐教,小女子不胜感激~
是不是报重复定义的错误?不是,是说没有该定义只能说明 你没分清楚c和c++、、、进一步来说是类、、、多看看书,打打基础请问你能简单的说一下么?现在即使要看书的话也有种摸不着头脑的赶脚……还请大侠说明一下~!好歹也贴下出错的代码这个……要贴的话比较复杂。我是全局声明的结构体,然后又定义了应用到该结构体的函数,然后再窗口类的某按钮下调用了该函数,然后就报错了,说我没有定义这个XXX(结构体的名字)。首先说说,之所以你把函数定义放在该类中后,然后实现的该函数就是此类的成员函数之一,所以在编译和运行的时候,都可以准确找到。这个与声明了静态static无关,static只是改变了函数只能调用静态函数,而不能调用非静态函数等,进一步来说才开始会出现错误还是你对c没有理解,函数不包含在该类,只要该函数放在你要调用函数之前即可,当然结构体也得放在该函数之前,毕竟c++要能对c进行拓展,要不然c++早就挂了! 本来不想回答,因为觉得你做人不太厚道,不过还是忍不住小女子实在愚昧不知这位大侠为何会有“不厚道”之见解?PS:若两者均做成全局的,即使把结构体放在该函数之前,把函数放在窗口函数之前,也是同样报错说无法识别
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。