Я новичок в программировании на основе шаблонов, и у меня есть эта ошибка при компиляции моего проекта
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------
}
Возможные причины:
1) Если ваш заголовок не начинается с #ifndef и вы включили тот же заголовок дважды или больше.
2) В CPP файл, в который вы включаете заголовок, содержащий шаблон, если вы снова определили методы (несколько определений, т.е. в cpp, а также в .h). Реализация методов в шаблоне должна быть определена там же один раз.
Других решений пока нет …