Следующий код (это упрощенная версия того, что мне нужно) не связыватьTrivial специализация метод не работает (C++)
В * .h файле:
class InterfaceFunctionField2 {
public:
template<class outputType> outputType to() { return outputType(); }
};
В * .cpp file
template<> double InterfaceFunctionField2::to<double>()
{ return 3.; }
Этот класс находится в статической библиотеке.
Я получаю сообщение об ошибке LNK2005: "public: double __thiscall ИнтерфейсFunctionField2 :: to (void) const" (?? $ to @ N @ InterfaceFunctionField2 @@ QBENXZ), уже определенный в ... "и" второе определение проигнорировано»предупреждение LNK4006
Я определяю InterfaceFunctionField2 :: к() специализации только один раз, и я не #include * .cpp файлы ....
Я посмотрел в Интернете (e.g. here) и этот тип код выглядит нормально, но компоновщик не согласен. Не могли бы вы помочь? Благодарю.
Правильный ответ менее чем через минуту после того, как вопрос был отправлен! Очень впечатляет, большое спасибо. –
@YuccaV рад помочь! –