开发者社区> 问答> 正文

在MFC中添加结构体导致结构体无法识别?报错

我用MFC做界面,然后在窗口中有一个算法需要处理,算法涉及到结构体还有涉及该结构体的函数,我将结构体和涉及该结构体的函数定义在类之外(全局的),然后在窗口类中利用该结构体定义其他变量,还有调用涉及该结构体的函数时报错,貌似是不能识别该结构体。

后来参照书上的例程把结构体定义在窗口类的头文件中,再在头文件中对该函数做了静态声明,再在该类的cpp文件中对函数进行了定义,再之后就能运行了……

但是WHY??我很好奇,同样C能做到的事情,为什么C++是这样的???还望各位大侠不吝赐教,小女子不胜感激~

展开
收起
爱吃鱼的程序员 2020-06-22 19:02:11 544 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    是不是报重复定义的错误?不是,是说没有该定义只能说明 你没分清楚c和c++、、、进一步来说是类、、、多看看书,打打基础请问你能简单的说一下么?现在即使要看书的话也有种摸不着头脑的赶脚……还请大侠说明一下~!好歹也贴下出错的代码这个……要贴的话比较复杂。我是全局声明的结构体,然后又定义了应用到该结构体的函数,然后再窗口类的某按钮下调用了该函数,然后就报错了,说我没有定义这个XXX(结构体的名字)。首先说说,之所以你把函数定义放在该类中后,然后实现的该函数就是此类的成员函数之一,所以在编译和运行的时候,都可以准确找到。这个与声明了静态static无关,static只是改变了函数只能调用静态函数,而不能调用非静态函数等,进一步来说才开始会出现错误还是你对c没有理解,函数不包含在该类,只要该函数放在你要调用函数之前即可,当然结构体也得放在该函数之前,毕竟c++要能对c进行拓展,要不然c++早就挂了!    本来不想回答,因为觉得你做人不太厚道,不过还是忍不住小女子实在愚昧不知这位大侠为何会有“不厚道”之见解?PS:若两者均做成全局的,即使把结构体放在该函数之前,把函数放在窗口函数之前,也是同样报错说无法识别

    2020-06-22 19:02:27
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载