我把自己在原来的模板类里面添加的成员函数都挨个的测试了一遍,可以顺利运行了。先不说时间开销和存储空间的开销有多优化,至少,在功能上,可以按我的构想运行了。
有几点让我感触比较深。在写大型程序的时候,模块化很关键。在实现函数的时候,一定要写一个,测试一个,测试成功了再加入到大的程序块中,再便一整个大的程序快,直到成功。要不然,很多函数一起一起测试很难找到确切的错误在哪里。
就那天还遇到一个问题,就是我要定义一模板类class matrix< _Ty>{...}中的一个成员函数void Reshape(CPtrArray & reshape_result,size_t I,size_t J,size_t K)
其中size_t是unsigned int的宏定义。要用到CPtrArray类,我就包含了#include<afxcoll.h> 这个头文件。但是编译时报错:
error C2678: binary '!=' : no operator defined which takes a left-hand operand of type 'const class std::valarray<double>' (or there is no acceptable conversion)
在实际的程序中,重载运算符“!=”我已经定义了。
当注释掉这句时,编译通过了,而且还运行出了正确的结果,
我现在也不知道是什么原因,请各位高手指点迷津。
还有上次遇到一个问题,就是如何将VC生成的.exe文件脱离VC环境运行?我在网上搜了一些资料,但是似乎那些对基于DOS的输出界面不起作用。
补充一句,我的程序不是基于MFC的。