Calculator PartⅢ

【主要思路】

  • 习惯将文字信息用图表表达
  • 基于助教在上篇博客下的留言做出的代码修改,但大部分由于时间关系还没完成;
  1. 对于选择条件不复杂的if语句改用switch语句,果然原本冗长的代码一下变得很清楚;
  2. 删除过多不必要的注释;
  3. 把字符串流对象的实例化调到进入循环之前
  4. Scan::checkNumber(string input)在本次代码中需要多次使用,将之从在main中调用改到在Scan::ToStringQueue(string input)中调用;

【出现的问题】

  • 在修改原代码的时候,为了减少if语句分支,使用了switch语句作为替代,但由于对此类语句较少使用,在使用过程中出现许多问题:其一,需要引用<stdio.h>类库,其二,开关语句的控制量必须是整型,最初我向switch中传入的控制量为string类型,得到报错信息“[ERROR]switch quantity not an integer”;
  • 这不是第一次出现内存错误,很明显对于某些知识基础掌握不大好,以及逻辑思维有相当的漏洞。用VS2012调试得到异常信息“0x00007FFA134C11A0 (msvcrt.dll) (Calculator.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x0000000000000000 时发生访问冲突”,知道问题在于内存,暂未解决此问题;
  • 由于要把所有有关打印的内容都放在Print类当中实现,而我的计算过程基本上是一步到位的,所以我将Scan.hCalculation.h都引用到了Print类中,然而一开始我采用的其实是友元的方法,但是我们知道面向对象的一个基本原则是封装性和信息隐蔽,而友元却能访问其他类中的私有成员,不能不说这是对封装原则的一种破坏,所以弃用了。

【框架描述图】

posted @ 2016-05-10 21:56  雨勤未晴丶  Views(223)  Comments(1Edit  收藏  举报