![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++ primer
文章平均质量分 68
祝枫
医疗器械领域90后,专注于呼吸机智能通气研究。
展开
-
C++编译时提示类型未定义(undefined)的可能原因
今天在添加了两个新的cpp和hpp文件后调试,结果编译器一直提示所使用的一个枚举类型未定义,经过仔细确认发现该类型已经正确定义,并且代码文件已经包含到工程中。后来经过反复确认,再加上网友给的灵感,感觉可能是由于头文件循环引用导致的该枚举类型声明出现了异常!!!经过排查,发现确实如此!!!由于工程比较大,头文件的引用可能也不是很规范,头文件的层层嵌套引用导致出现了A.hpp包含了B.hpp,然后B.hpp又包含了A.hpp,故出现了上述未定义的错误。因此,当出现莫名其妙的类型未定义错误时,很可能是由于头文原创 2020-06-29 23:03:47 · 5306 阅读 · 0 评论 -
“error LNK2019: 无法解析的外部符号”原因分析
前几天程序开发完成进行编译的时候,遇到了“error LNK2019: 无法解析的外部符号”的链接错误,导致应用程序无法生成,很是郁闷。后来在晚上查阅了各种资料,发现这个错误并不是在编译阶段出现的,而是在链接的时候出现的,因此排除了语法上的错误。然后,有网友经验说,这是由于工程引用的库文件未添加到工程中去,然而我这个程序并没有引用外部库文件,因此也排除这个原因。最后,根据“工程引用的库文件未添加到工程中去”这个原因,我推断是不是后来程序要找的功能函数在工程中并没有,那么要么是工程引用的库文件未正确添加原创 2020-06-26 15:27:37 · 1551 阅读 · 0 评论 -
C++函数模板的显式具体化
我们知道可以利用函数模板来处理不同的数据类型,然而函数模板对于某些数据类型并不能处理,具有一定的局限性。那么应该如何解决该局限性呢?例如经典的数据交换函数Swaptemplate <typename T>void Swap(T &a, T &b){T temp;temp = a;a = b;b = temp;}我们可能希望利用上述的函数模板实现不同...原创 2018-12-16 14:09:17 · 786 阅读 · 0 评论 -
C++泛型编程:函数模板与类模板
泛型编程是一种语言机制,通过他可以实现一个标准的容器库,可以处理不同的数据类型.比如对栈的描述:class stack{push(参数类型)//入栈pop(参数类型)//出栈}由于上面的代码与数据类型有关,可以通过模板实现一个代码处理不同的数据类型。首先执行一种通用的数据类型,不用具体指明哪一种。class stack<参数模板 T>{push(T)//入栈po...原创 2018-12-15 21:52:43 · 591 阅读 · 0 评论 -
顶层设计——代码移植所带来的教训
如同人生一样,没有顶层设计的代码移植过程也是会增加许多原本没必要的挫折。最近一周在忙一件事情:将产品A上的F功能移植到产品B上。其中一个很麻烦的问题就是代码中变量和常量单位的修改,因为由于B不支持浮点型加速运算,它当中很多原本是浮点型的数据都扩大了100倍转为整型进行运算,而A中的F功能代码还都是采用浮点型运算,因此需要将F功能的代码中变量和常量的单位根据产品B的需求进行修改,以融合到B中。刚...原创 2018-10-16 21:51:40 · 948 阅读 · 0 评论 -
C++类对象中虚函数与多态性的实现
在面向对象编程时,有时会遇到这种需求:我们希望同一个方法在基类和派生类中实现不同的功能,即体现出行为上的多态性。一般有两种方法可以实现这种需求,其一是在派生类中重新定义基类中方法,其二是使用虚函数。这里主要记录利用虚函数实现多态性的方法。类中虚函数的定义方法虚函数使用关键词virtual进行标识。通过一个例子加深对虚函数的理解,一个银行需要开发两类账户,一类是基本账户BaseAcct,另一类是...原创 2018-10-09 21:56:30 · 433 阅读 · 0 评论 -
C和C++编译和链接原理
每天看着IDE consle里编译时输出的一行行结果,我就在想:这C++在编译的时候都干些啥啊?若干个cpp文件和hpp文件怎么就最后生成了一个exe可执行文件?花了一个小时的时间,我初步理解了C+\编译和链接的过程,其可分为 预编译–编译–链接 三个过程。原创 2018-09-28 21:52:37 · 593 阅读 · 0 评论 -
编程规范(一):C/C++的命名原则
符合规范的统一命名是程序编写的基本规矩之一。很多时候我们不愿意接手别人的代码,原因之一就是代码命名很乱;我们自己写代码时经常写到后面忘了前面,也有可能是我们没有养成规范的命名习惯。当写代码成为一种艺术的美时,这种美的最直接的体现就是其中变量函数等命名的规范性。原创 2018-10-07 12:02:51 · 6831 阅读 · 2 评论 -
const与指针:指向const的指针与const指针的区别
指针,可以说是C语言编程的掌上明珠,而将const应用于指针,会产生一些挺微妙的现象。指向const的指针第一种用法是令指针指向一个常量,称之为指向const的指针,可以防止使用该指针修改所指向对象的值;int age=40;const int *pt=&amp;age;则该声明指出,pt指向了一个const int,因此不能使用pt来修改age的值。然而实际上age并不是一个常量,可...原创 2018-10-17 21:00:45 · 1183 阅读 · 0 评论 -
C++中静态成员变量和静态成员函数的用法
昨天在修改项目函数功能时,在其中一个类中添加了一个静态成员变量和两个静态成员函数,结果在链接时出现一个非常典型的错误:“The follwing symbols referenced in processor “p0” could not be resolved:Class:var1…”。我知道这是在链接的时候没有找到变量var1的定义,没有为变量var1分配内存,但是我感到奇怪的是我在类中定义了...原创 2018-10-04 15:26:28 · 2262 阅读 · 0 评论 -
如何阅读他人的项目源代码程序
相信很多人和我一样,面对着别人密密麻麻的代码,宁愿自己从零开始编写自己的代码,也不愿在别人代码的基础上修改: 阅读别人的代码太痛苦了! 在注释不明确、技术文档缺失,这一行行的代码犹如阅读天书一般,痛苦、煎熬,迷茫。因此,对于阅读别人的代码,我从内心有一种强烈的抵制情绪,甚至有些恐惧。然而,阅读他人的项目源码是每一个写程序的人(我只是个在项目需要的时候偶尔写程序的,不敢自称程序员)必须经历的事情。...原创 2018-09-30 21:26:01 · 10166 阅读 · 1 评论