在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++不会。
作者:Jake Lin(Jake's Blog on 博客园)
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。
出处:http://procoder.cnblogs.com
本作品由Jake Lin创作,采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。 任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言。