我有一個任務:在模板類中使用非模板函數
要實現模板向量類(讓我們將其命名爲myvector)。我需要在我的項目中的多個文件中使用這個類,因此我將它的聲明放在「myvector.h」文件中,並將實現放入「myvector.hpp」文件中,然後在「myvector」中包含「myvector.hpp」。 h「後的所有聲明(如描述there)。但是,我在「myvector.hpp」中有一個非模板函數。所以當我在主文件中包含「myvector.h」文件時,一切正常。但是,當我包括另一個文件(「bignum.cpp」)「myvector.h」,我得到一個鏈接錯誤:
error LNK2005: "unsigned int __cdecl gerasimov_dmitry::calculate_capacity(unsigned int)" ([email protected][email protected]@[email protected]) already defined in bignum.obj
我明白了原因 - 「bignum.h」代碼獲取既包括主.cpp和bignum.cpp文件中,因此編譯器不知道使用哪一個「calculate_capacity」函數。所以,我的問題是如何解決這種情況。
謝謝。內聯工作正常。我試圖將定義移到單個翻譯單元,但我認爲我做錯了:) – karlicoss 2011-04-18 20:13:51