1. 指针问题(好难描述这个问题了)
如下一段代码:
(A)AdsPlayList playList;// 这个类中有一个 std::vector<AdsPlayItem*> 对象,存放一系列的指针
(A)playList.load( filename ); // 构建 std::vector<AdsPlayItem*>
(A)std::vector<AdsVideoPlayItem*> vlist = playList.getVideoPlayList();// 从中取出一部分使用
(B) 使用 vlist 的代码,如
for ( i = 0; i < vlist.size(); i++ )
{ // operation
}
如果代码A与代码B在一个代码段内,那么程序不会有任何问题。
但是,如果这段代码被拆分两份,在一地方取出数据(标A代码),在另外一个地方使用它(标B代码),那么就会出现 野指针 的问题。debug会发现,能够从文件中取出所有的数据,完整的构建 std::vector<AdsPlayItem*> ,但是构建完毕后,使用它的时候,指针指向垃圾数据,无法取出。
原因:浅拷贝,两个指针指向同一片区域,当一个指针释放后,导致另外一个指向垃圾数据。
在playList.getVideoPlayList();操作时,是相当于从原始的向量中取出一部分的指针,然后插入到该向量。执行完毕后,对象playList被释放了,其内部向量所指向的数据也全部释放。这时候,刚才取出存放在vlist中的指针就车成野指针了,全部指向垃圾数据。
2. XmlRpc++库问题
当一个客户离开的时候,如何让库的使用者感知其的离开?
尚未解决。基于现有的xmlrpc的体系架构,还真不知道该怎么去解决这个问题。难办。
越做到后面,自己重新对其进行封装的欲望越强烈。
太多的操作都要受其限制,很难有效的扩充。
3. 过度设计,或者滥用模式?
感觉自己有这方面的苗头了。最近在设计过程中,一个很小的角落,都希望能够对其进行抽象,写出优雅的代码。但结果常常不好,不仅常常被修改,而且也不觉得优雅,类的数量上升非常快。到后来不得不严格控制才得行了。
怎么把握一个度,以及去做真正需要的抽象,我得好好考虑下了。