2013-07-15 80 views
0

我是一個新的蜜蜂基於模板的編程和編譯我的項目C++多個定義錯誤

error : multiple definition of Expr::Chapter_2<double>::get_pointer() 
objectfile.o:/Filename.h:42 first defined here. 

當給定的代碼完全是一個.H頭文件中我有這樣的錯誤。任何指針來解決這個問題,高度讚賞。

代碼:

template< typename T > 
class Chapter_2{ 

------- 
public : 
    inline T* get_pointer(); 
------- 
}; 

// Function definitions 
template< typename T > 
T* Chapter_2<T>::get_pointer() { 
    ------code------ 
} 

// double specialization of template 
template<> 
double* Chapter_2<double>::get_pointer() { 
    ------code------ 
} 
+2

你不應該單獨的模板類的.h和.cpp – Rapptz

+1

你[守護你的頭對多種夾雜物(http://stackoverflow.com/a/5106717/1553090)? – paddy

回答

0

可能的原因:

1)如果你有你的頭沒有開始的#ifndef,你已經包含了相同的標題兩次以上。

2)在cpp文件中,如果您再次定義了方法(多個定義,即cpp以及.h中),那麼您將包含包含該模板的頭文件。在模板的方法的實施應該在同一個地方一次定義。