c++泛型编程编译问题

在C++泛型编程时遇到'undefined reference to'模板类错误,通常是因为编译器仅处理了模板的声明而未找到其实现。解决方法包括将实现放在头文件中或在头文件中显式实例化所需类型。这样虽可能导致头文件增大和编译速度减慢,但能确保编译器找到实例化的成员函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

‘undefined reference to’ 模板类

​ c++泛型编程时候,由于.h文件中放声明,.cpp里放实现,main里调用,编译时候,就出现这样的问题。

解决方法:

  1. 将实现放在.h文件里,即声明实现放在同一个头文件中。

    缺点:会导致头文件比较大,加载,编译时候慢。

  2. 在.h头文件声明泛型类后,最后显示的实例化几个类。

    缺点:用到的类型必须要显示实例化,如果没有枚举到,还是会出上述问题。

    template<typename T> class A {};//声明完成
    template class A<int>;           //显示实例化了int的A类
    template class A<string>;
    //在后面实现时候,int,string的A类因为显示实例化了,所以调用时候不会有上述'undefined reference to class xx'的问题<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值