类模板的.h和.cpp文件分离写法

按照正常的分离写法,应该是这样:

  1. 类模板声明
#include <iostream>
using namespace std;

template<class T>
class ClassTemplatehcpp
{
public:
    ClassTemplatehcpp(T name);
    void Print();
private:
    T m_name;
};
  1. 类模板实现
#include "ClassTemplatehcpp.h"

template<class T>
ClassTemplatehcpp<T>::ClassTemplatehcpp(T name)
{
    m_name = name;
}

template<class T>
void ClassTemplatehcpp<T>::Print()
{
    cout << m_name;

}
  1. 在编译的时候,不会报错,但如果调用此类模板,就会报链接错误。
ClassTemplatehcpp<int> ct(100);
 ct.Print();

在这里插入图片描述
原因是:.cpp文件时独立编译,如果在文件中没有找到函数定义,就会设置一个函数符号,让链接器在链接的时候查找。如果找到,就正常通过,如果找不到,就会报错。类模板在.cpp编译时,没有生成具体类,在函数调用的时候,才会生成。 所以链接器找不到,就会报错。

  1. 解决方案
    在调用的时候,包含.cpp文件。运行结果如下:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

giantmfc123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值