2011-07-04 41 views
3

我目前正在編寫一個三維可視化程序,所以我編寫了自己的Vector3類來進行一些方便的矢量操作。這工作得很好,直到我需要加載一些Meshes,我使用的外部庫有它自己的Vector3類。現在,編譯器無法區分它們,而且我也無法更改它們,因爲它們在代碼中包含過多。 有沒有人知道如何將它們分開編譯器?我的課干擾了圖書館課

我想過圍繞加載器創建一個命名空間,但在庫實現中遇到了錯誤。

任何想法將不勝感激。

編輯 不幸的是,我自己的項目以及圖書館沒有自己的命名空間。

(已解決) 好吧,我通過刪除庫並使用eclipse自動重構我的代碼來解決此問題。但是,如果它無法做到這一點,我怎麼能在獨立於IDE的C++中解決這個問題? - >未標記爲已回答

+2

命名空間是這裏的解決方案。如果您遇到編譯器/鏈接器錯誤,那麼您需要編輯您的問題以包含一些代表性代碼,然後我們可以幫助您解決這些問題。 –

+0

Ehm。我很確定這個庫在它自己的命名空間中有它的'Vector3'類。如果沒有,反正是壞的。你是否在任何地方爲該庫使用'using namespace XXX;'? – Xeo

+4

@Xeo:有人希望OP將他自己的類放在命名空間中... –

回答

7

編輯不幸的是我自己的項目中。以及圖書館沒有自己的名字空間。

解決方案很明顯。把你的項目放在一個命名空間中。如果它沒有任何名稱空間,請使用:: Vector3參照庫中的Vector3。

+0

我不使用庫中的Vector3自己。只有圖書館。我認爲事後添加命名空間非常乏味,但可能它是唯一的方法。 – Nobody

0

在您創建的類名稱及其內建類之前使用您的項目名稱空間。 像:

MyProject的::的Vector3D

XXX ::的Vector3D

的 'xxx' 是其內建Vector3D類是在命名空間

+4

C++中的作用域操作符是'::',而不是'.'。 –