在Windows Embedded CE开发Native C++时一个继承的误用

这几天一直查一个Wince上的问题,其实和Windows Mobile和Windows Embedded Ce关系不大,但是找到原因也blog下来。

 

我在增加一个新功能,同时修改了设计,把代码重构了,把一个数据成员的对象从子类pull up到父类。从原先的private改成protected。我测试代码,一切正常。可是由于某种原因我的代码是基于tag的基础上开发的,当我commit代码的时候,需要重新switch到branch,然后merge代码。

 

但是自从switch以后,代码运行不正常,开始以为项目配置的原因,因为代码原先是正常的,查了一段时间,我把所有该对象的构造函数全部打印出来,发现同一个对象构造了两次,找到了原因,原因我在switch和merge的时候svn重新把该对象定义的代码放回子类,也就是同一个名字的对象给定义了两次,导致代码运行不正常。

 

经验教训:

以后对版本管理要更加小心,我在提交了上一个版本的基础上就着手开发,所以使用了tag,而不是branch。哪怕做错了,merge版本的时候要小心,不能相信svn的merge功能。

做c++要比c#小心,同样重复定义变量的情况c#在编译时会报错,可是c++不会。

 

posted @ 2010-01-11 07:52  Jake Lin  阅读(523)  评论(0编辑  收藏  举报