在兩個不同文件(A.cpp,Ah,B.cpp,Bh)中,我有兩個相同類的版本,所有文件中類的名稱相同但內部實現不同。在不同文件中具有相同名稱的不同類版本
我的想法是通過更改#include中的.h文件的名稱從一個版本切換到另一個版本,所以我不應該更改代碼中的其他任何東西(兩個版本的方法都有相同的簽名和相同的屬性)
Ah和Bh從不包括在同一時間。
問題是無論什麼包括我總是使用的文件執行一個版本。我知道,當我包含B.h時,至少它是編譯的(通過在編譯時顯示一些代碼錯誤)
可以這樣做嗎?或者這是違反C++的一些規則?我認爲這不應該違反One Definition Rule,因爲我不同時使用A.h和B.h。
問題是你如何鏈接目標文件?只是調整包括不起作用。 – pmr
如果你包含B.h並且鏈接到B.o,你應該沒問題。你如何鏈接?但是如果這個班級的api是一致的,那麼A.h和B.h應該是相同的;他們爲什麼不同? –
你包含的頭文件不會像你鏈接的實際代碼那麼重要。 – Joe