首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在模板类实现中分离.h和.cpp文件

在模板类实现中分离.h和.cpp文件
EN

Stack Overflow用户
提问于 2013-03-23 02:32:48
回答 2查看 19.4K关注 0票数 8

我正在尝试编写一个模板类,它可以根据我传递的<class>来形成类。问题是我不能在同一个.h文件中声明和定义。在我的项目中,UTF工具只能处理.cpp文件(用于代码覆盖率等)。我在一篇博客中看到他们说“用.cpp代替.h”。这样做可取吗?

Template.h

代码语言:javascript
复制
#ifndef TEMPLATE_H_
#define TEMPLATE_H_

template<class T>
class Template
{
public:
    T Add(T a,T b);
};

#endif /* TEMPLATE_H_ */

Template.cpp

代码语言:javascript
复制
#include "Template.h"

template<class T>
T Template<T>::Add(T a, T b)
{
    return a+b;
}

Main.cpp

代码语言:javascript
复制
#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

EN

Stack Overflow用户

发布于 2013-03-23 02:41:59

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

请参阅Why can templates only be implemented in the header file?

票数 7
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15577478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档