c – 模板类实现中单独的.h和.cpp文件

前端之家收集整理的这篇文章主要介绍了c – 模板类实现中单独的.h和.cpp文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试编写一个模板类,它可以根据< 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;
}

如果这不可行,那么我该如何解决这个问题呢?出口?

解决方法

编译器需要访问方法的实现才能实例化模板类,因此最常见的做法是在头文件中包含模板的定义,以声明该模板或在头文件中定义它们.

Why can templates only be implemented in the header file?

猜你在找的C&C++相关文章