无法将函数定义与现有的声明匹配 问题的解决办法 分享

这是一个初秋的夜晚,天气晴朗,一丝风都没有,抬头仰望,湛蓝的天空中,挂着一轮金黄的圆月。月亮把它那淡淡的月光毫不吝啬地撒向洞庭湖。圆月四周,稀稀疏疏地点缀着几颗星星,那几颗星星也把微弱的光源聚集起来,撒向月光下的湖面。这下,洞庭湖真是美极了。

今晚在整MFC,遇到了以下的问题。

d:\我的文档\visual studio 2008\projects\virtualosc\arraylisttype.h(171) : error C2244:
“arrayListType<elemType>::maxListSize”: 无法将函数定义与现有的声明匹配
1> d:\我的文档\visual studio 2008\projects\virtualosc\arraylisttype.h(37) : 参见
“arrayListType<elemType>::maxListSize”的声明
1> 定义
1> 'int arrayListType::maxListSize(void)'
1> 现有声明
1> 'int arrayListType<elemType>::maxListSize(void)'

想了挺久的都没能解决,后来在百度的帮助下解决了。问题其实很好解决,只是自己没想到,但是没办法,没想到就是没想到。现在把问题记录下来,下次再出现这种问题就能快速解决。解决方法在下面:

在arraylisttype.h前加入:

#ifndef ARRAYLISTTYPE_H
#define ARRAYLISTTYPE_H

在arraylisttype.h末尾加入:

#endif

这样头文件arraylisttype.h就不会被重复包含而导致编译错误了。现在,对上面的语句进行解释。


#ifndef ARRAYLISTTYPE_H 的意思是“如果没有定义宏 ARRAYLISTTYPE_H”

#define ARRAYLISTTYPE_H 的意思是“定义宏 ARRAYLISTTYPE_H”

#endif 的意思是“结束”

总的说就是,假如标识符ARRAYLISTTYPE_H没有被定义,那么定义标识符ARRAYLISTTYPE_H,并让#ifndef和#endif之间的代码被编译处理。如果头文件ARRAYLISTTYPE_H 被第二次包含,语句#ifndef就会失效,并且#endif之前的全部语句将被编译器忽略。————Data Structure Using C++,D.S.Malik

以后自己再写头文件一定记得要添加上面的预处理命令

到此这篇关于无法将函数定义与现有的声明匹配 问题的解决办法 分享就介绍到这了。人在什么阶段,就做那个阶段的事,说这个阶段该说的话,不要想的太多,太好。不管是理想还是梦想,都是需要地基的。只有你把这个阶段做好做完美,才会能接触到下一阶段的人,下一阶段的事,才能有个明确,真实,看得见摸得着的未来。更多相关无法将函数定义与现有的声明匹配 问题的解决办法 分享内容请查看相关栏目,小编编辑不易,再次感谢大家的支持!

您可能有感兴趣的文章
ASP.NET中Response.BufferOutput属性的使用技巧

ASP.NET轻量级MVC框架Nancy的基本用法

使用grpcui测试ASP.NET core的gRPC服务

ASP.NET Core中的对象池介绍

.NET集成ORM框架HiSql