我是基于模板编程的新手,编译项目时出现此错误
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------
}
答案 0 :(得分:0)
可能的原因:
1)如果您的标题没有以 #ifndef 开头,并且您包含了相同的标题两次或更多。
2)在 cpp 文件中,如果您再次定义了方法(多个定义,即在cpp和.h中),则包含包含模板的标题。模板中方法的实现应该在一次的同一位置定义。