У меня есть контейнерный объект, который шаблонизируется. Я пытаюсь сделать специализированный конструктор для float
версий. Проблема в том, что когда компилятор пытается скомпилировать второй объект, который использует версию float
, я получаю ошибку multiple definition of
.
ПРИМЕЧАНИЯ: Весь класс в файле h
. Файл упакован с определением (#ifndef
, #define
и #endif
). g ++ версия 3.4.6. Это прекрасно компилируется с другими компиляторами, например Микросхема Intel.
Код похож на следующий:
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
}
Есть идеи? Спасибо!
РЕДАКТИРОВАТЬ Скомпилированные объекты также собираются в отдельные общие объекты, не уверенные, имеет ли это какое-либо отношение к этому.