我正在尝试编写一个模板类,它可以根据我传递的<class>来形成类。问题是我不能在同一个.h文件中声明和定义。在我的项目中,UTF工具只能处理.cpp文件(用于代码覆盖率等)。我在一篇博客中看到他们说“用.cpp代替.h”。这样做可取吗?
Template.h
#ifndef TEMPLATE_H_
#define TEMPLATE_H_
template<class T>
class Template
{
public:
T Add(T a,T b);
};
#endif /* TEMPLATE_H_ */Template.cpp
#include "Template.h"
template<class T>
T Template<T>::Add(T a, T b)
{
return a+b;
}Main.cpp
#include "Template.cpp" //Is this a good practise?
#include <iostream>
int main(int argc, char **argv) {
Template<int> obj;
std::cout<<obj.Add(3,4)<<std::endl;
}如果这是不可取的,那么我如何解决这个问题?export
发布于 2013-03-23 02:41:59
编译器需要有权访问方法的实现才能实例化模板类,因此最常见的做法是在声明模板的头文件中包含模板的定义,或者在头文件中定义它们。
请参阅Why can templates only be implemented in the header file?
https://stackoverflow.com/questions/15577478
复制相似问题