我試圖將一箇舊庫(儘可能不使用名稱空間)移植到現代編譯器中。我的一個目標無法區分System :: TObject和:: TObject(沒有命名空間)。 System :: TObject是編譯器原生的。如何在移植舊代碼時處理類名衝突?
我試過使用指令,即使用:: TObject;
但是,這並沒有做到這一點。
顯而易見的解決方案是將所有原始庫封裝在一個名稱空間中,然後通過名稱來調用它 - 這應該避免含糊不清。但是,這是最明智的解決方案嗎?還有其他解決方案嗎?添加一個命名空間需要更改一堆文件,我不知道它是否會在稍後產生不必要的影響。
這將導致編譯器創建以oldlib爲前綴的符號,該符號不會出現在舊庫中,從而導致「未解析的外部符號」public:__thiscall oldlib :: A ::〜A(void)「(? ?1A @ oldlib @@ QAE @ XZ)` – xtofl 2008-10-10 09:33:39