我有一個模板化的容器對象。我正在嘗試爲float
版本創建專門的構造函數。問題是,當編譯器試圖編譯使用float
版本的第二個對象時,我得到一個multiple definition of
錯誤。g ++中的模板規範編譯錯誤
注意:整個班級在h
文件中。該文件包含一個定義(#ifndef
,#define
和#endif
)。 g ++版本3.4.6。這可以與其他編譯器一起編譯,例如英特爾的icc。
代碼類似於以下內容:
template <typename T>
class Container {
public:
Container();
virtual ~Container() {}
private:
std::vector<T> data;
// other members
};
template <> Container<float>::Container() {
// do something special
}
template <typename T> Container<T>::Container() {
// do default initialization
}
任何想法?謝謝!
編輯正在編譯的對象也將進入單獨的共享對象,不確定是否與它有關。
g ++ 4.0.1也很好。升級? –
目前,我無法這樣做,或者相信我會。我被鎖定到該版本的這個應用程序。 – steveo225
只是爲了測試,我將代碼複製到了一個有g ++ 4.1.1的盒子,並得到了相同的錯誤。 – steveo225