2007年10月
从前面的代码还可以看出,应用any的过程中还是有比较大的限制。例如当多个重载函数的第一个参数类型相同的时候,虽然后续的参数类型不同,是合法的C++重载函数,但是 any就不知道该转型为那一个,从而产生了编译错误:)本文就给出了几种解决这种难题的方法:)阅读全文>
发表于 @ 2007年10月23日 21:58:00|评论(loading...)|编辑
在上一篇文档中提到了分析函数参数数量的方法,现在就来解决更深层次的问题:这些数量的函数参数具体是什么类型的?本文就给出了一个比较统一的方法实现了采用C++模板语言分析出类域中的某个函数的参数具体是什么!阅读全文>
发表于 @ 2007年10月23日 21:55:00|评论(loading...)|编辑
在分析C++代码的时候,特别是分析C++函数(仿函数)的时候,若是能够分析出在一个名字空间(类域)里面的指定函数名称的函数的参数的数量将会是非常有用的:)这一章就对这个问题进行详细的分析。阅读全文>
发表于 @ 2007年10月23日 21:52:00|评论(loading...)|编辑
本文采用C++语言自身的模板语言实现了分析C++类结构的功能。C++类结构的内容包括:
1.类是否拥有指定参数的成员函数
2.类是否存在指定名称的成员函数
3.类是否存在指定名称的成员变量
4.类是否存在指定名称的子类(型)
阅读全文>
发表于 @ 2007年10月23日 21:49:00|评论(loading...)|编辑
本文介绍了采用C++的模板技术,可以实现C++语言自己分析自己的类层次结构:)可以分析出某个类的基类是什么,是不是很神奇啊;)阅读全文>
发表于 @ 2007年10月23日 21:45:00|评论(loading...)|编辑
介绍通过C++中的模板,可以表达为一种计算机语言的原理:)拥有整数加减乘除四则运算,选择结构和循环结构:)具备有通用编程语言具备的基本结构,从而构成了语言结构,本文只是解释前述结构的实现方式;)阅读全文>
发表于 @ 2007年10月23日 21:42:00|评论(loading...)|编辑
有了前面的这些基础性的代码之后,我们就可以处理大量的撤销和重做操作了:)但是通常的情况下,我们还是希望能够往command里面添加一些额外的信息。例如:为了在图形用户界面应用程序里面显示还可以撤销的命令队列列表以及可以重做的命令列表,这两种情况下都需要给每一个命令添加一个额外的名称信息,所以我们将前面的command代码修改为下面的basic_command代码:阅读全文>
发表于 @ 2007年10月11日 21:26:00|评论(loading...)|编辑
目前为止,已经成功的将三个基本操作封装为三个基本命令,同时也将一个复合操作封装成了一个复合命令,另外也给出了简单的使用代码;从代码中可以看出,撤销和重做的过程还是比较晦涩,用户为了表达撤销和重做的过程还需要编写很多的额外代码,而且这种代码也没有很直接的表达撤销和重做的思想。阅读全文>
发表于 @ 2007年10月11日 21:23:00|评论(loading...)|编辑
虽然有了上面的命令基类、复合操作类就可以实现\ *任意*\ 的撤销和重做功能的程序了,但是很明显,还需要编写大量的派生自命令基类的\ *各种各样*\ 的操作类。那么有没有办法减轻或者消除这种负担呢?阅读全文>
发表于 @ 2007年10月11日 21:21:00|评论(loading...)|编辑
在上一节中,已经对三种基本操作的撤销和重做的原理实现进行了细致的分析,并给出了示例代码,但是并没能够给出复合操作的示例代码。这里面有着比较深刻的原因,具体来说就是:复合操作里面保存的是三个基本操作以及子复合操作的任意组合,这里面本身就存在一个将三个基本操作和复合操作\ **对象化**\ 的概念,在三个基本操作实现对象化之前是不能够讨论复合操作的!既然需要对三个基本操作进行对象化,同时还应该看到:复合操作可以保存其它的复合操作,这说明复合操作也需要对象化!既然三个基本操作和一个复合操作都需要对象化,并且这些对象都可以保存到复合操作里面,那么在对三个基本操作的对象化的同时就应该考虑复合操作的对象化问题!阅读全文>
发表于 @ 2007年10月11日 21:19:00|评论(loading...)|编辑
采用通用的方法,解释了撤销(undo)和重做(redo)的原理实现:)阅读全文>
发表于 @ 2007年10月11日 21:16:00|评论(loading...)|编辑
在撤销和重做的实现过程中,总会出现各种各样的特殊情况和特殊技巧来实现撤销和重做功能,由于本系列文档实现的是采用了一般化的方法实现了撤销和重做框架!所以就要思考这样的问题:采用取巧的方法是否一定比这里通用的方法在时间和空间上面高效呢?本文就是通过讨论一个基本的交换函数来作为类比,虽然不是很有说服力的解释,但是也说明了不少的问题!阅读全文>
发表于 @ 2007年10月11日 20:32:00|评论(loading...)|编辑