天天看點

在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部落格園部落格,原文連結:http://www.cnblogs.com/procoder/archive/2010/01/11/Windows-Mobile-Native-CPP-Inheritance.html,如需轉載請自行聯系原作者