0

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

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------
}
4

1 回答 1

0

可能的原因:

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

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

于 2013-07-15T04:54:45.593 回答