c ++使用模板的多重定义错误

时间:2013-07-15 02:17:18

标签: c++ templates multiple-definition-error

我是基于模板编程的新手,编译项目时出现此错误

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 个答案:

答案 0 :(得分:0)

可能的原因:

1)如果您的标题没有以 #ifndef 开头,并且您包含了相同的标题两次或更多。

2)在 cpp 文件中,如果您再次定义了方法(多个定义,即在cpp和.h中),则包含包含模板的标题。模板中方法的实现应该在一次的同一位置定义。