调用模板类出现 undefined reference 错误的解决方法

2023-11-03

 g++不支持模板类的分离编译,因此模板的实现最好都些在.h文件中,否则将出现undefined reference to XXXX 的错误。下面是一个出错的例子,解决方法就是将stack.cc中的代码移到stack.h中。


01
02
03 #ifndef __MY_STACK__
04 #define __MY_STACK__
05
06 #include <vector>
07 #include <stdexcept>
08
09 template <typename T>
10 class Stack {
11 public:
12     void push(T const&);
13     void pop();
14     T top() const;
15     bool empty() const {
16         return elems.empty();
17     }
18 private:
19     std::vector<T> elems;
20 };
21
22 #endif
23
24
25
26 #include "stack.h"
27
28 template <typename T>
29 void Stack<T>::push (T const& elem)
30 {
31     elems.push_back(elem);
32 }
33
34 template <typename T>
35 void Stack<T>::pop ()
36 {
37     if (elems.empty()) {
38         throw std::out_of_range("Stack<>::pop(): empty stack");
39     }
40     elems.pop_back();
41 }
42
43 template <typename T>
44 T Stack<T>::top () const
45 {
46     if (elems.empty()) {
47         throw std::out_of_range("Stack<>::top(): empty stack");
48     }
49     return elems.back();
50 }
51
52
53
54 #include <iostream>
55 #include "stack.h"
56
57 int main(void)
58 {
59     Stack<int> is;
60   
61     int i;
62
63     for (i=0i<10i++{
64         is.push(i);
65     } 
66
67     for (i=0i<12i++{
68         std::cout << is.top() <<std::endl;
69         is.pop();
70     } 
71
72     return 0;
73 }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调用模板类出现 undefined reference 错误的解决方法 的相关文章

随机推荐

  • Mybatis多表模型

    多表模型 多表模型分类 一对一 在任意一方建立外键 关联对方的主键 一对多 在多的一方建立外键 关联一的一方的主键 多对多 借助中间表 中间表至少两个字段 分别关联两张表的主键 多表模型一对一操作 sql语句准备 CREATE TABLE
  • QGIS插件式开发(三)---插件开发

    本篇文章着重讲述插件开发的主要流程 揭开QGIS插件式开发的真面目 正所谓万事开头难 掌握了第一步 后面就可以把主要精力放在功能开发上 而不必再为怎么加载插件 init 函数的功能是什么等问题所困扰 一 自动创建 自动创建很简单 比较适合对
  • useMemo和useCallback的区别 及使用场景

    useMemo 和 useCallback 接收的参数都是一样 第一个参数为回调 第二个参数为要依赖的数据 共同作用 1 仅仅 依赖数据 发生变化 才会重新计算结果 也就是起到缓存的作用 两者区别 1 useMemo 计算结果是 retur
  • Qt里的信号与槽原理

    一 什么是信号与槽机制 信号和槽 Signal Slot 用于两个对象 object 进行交流 通俗地来说 就是一个对象发出什么信号 另一个对象执行相应的动作 比如跑步比赛中 裁判员发出枪响信号 运动员开始起跑 信号 Signal 相当于发
  • Dialog的layout中有fragment,第二次报错

    1 概述 Dialog用的是最简单的AlertDialog Builder建立的 通过setView view 实现自定义布局 布局里嵌套了一个自定义的fragment 第一次弹出对话框的时候没有问题 第二次再弹的话就会出现错误信息 Bin
  • 阿里云——云安全中心安全事件提醒:挖矿程序

    近日收到云安全中心安全事件提醒 出现了紧急安全事件 挖矿程序 建议您立即登录查看事件详情 并根据事件建议的方案进行处理 登录服务器后用top命令查看CPU利用率并不高 感觉不一定真是挖矿程序在作怪 或挖矿还没启动 用ps ef命令列出进程
  • 数据类型、python数字、数据类型转换、字符串

    目录 1 python的数据类型 2 python 数字 2 使用casting完成数据类型转换 3 字符串 4 字符串常用的内置方法 5 字符串的内建方法 6 字符串的内置方法与内建方法的区别有以下几种 1 python的数据类型 可以使
  • Typescript 基本类型 —— 字符串 String

    使用双引号 或单引号 来表示字符串 关键字 string let str string hello world let res string hello world 编译成js var str hello world var res hel
  • python生成t分布随机数_python没有直接生成服从泊松分布随机数的函数吗

    满意答案 bhedba 2017 02 16 采纳率 49 等级 9 已帮助 314人 首先是泊松分布 这是一个离散型的随机变量分布 比较好弄 此外例如考察一些到达事件的概率时 通常服从泊松分布 因此该分布相当实用 在开始编写之前 先感谢知
  • 图神经网络学习01:图卷积神经网络GCN实战解决论文分类问题(tensorflow实现)

    图神经网络学习01 图卷积神经网络GCN实战解决论文分类问题 tensorflow实现 文章目录 图神经网络学习01 图卷积神经网络GCN实战解决论文分类问题 tensorflow实现 前言 1 数据集的介绍 2 网络的搭建 3 数据的处理
  • Anaconda_Python视觉项目TensorFlow_scikit-learn和OpenCV及其Raspberry Pi雾计算

    设置 Anaconda 环境 介绍和安装 Python 和 Anaconda 安装库 探索Jupyter Notebook TensorFlow创建图像字幕 图像字幕 字幕模型 Jupyter执行模型 训练模型 OpenCV 读取车牌 读取
  • PTAL2-028秀恩爱分得快(无算法,纯编程)

    PTAL2 028秀恩爱分得快 题目链接 PTAL2 029秀恩爱分得快 注意事项 无算法 纯编程 主要就是性别的处理 亲近度的计算 记住对照片的输入是要字符串 因为0可能是异性 二者亲近度都与最大值相等 就输出这对情侣 如果不是相等的 哪
  • 定位及优化SQL语句的性能问题

    一 EXPLAIN 做MySQL优化 我们要善用 EXPLAIN 查看SQL执行计划 下面来个简单的示例 标注 1 2 3 4 5 我们要重点关注的数据 type列 连接类型 一个好的sql语句至少要达到range级别 杜绝出现all级别
  • 海思Hi3536使用QOpenGLWidget预览yuv420sp视频

    参考文章 ffmpeg opengl 硬解视频并使用opengl在qt中显示nv12 qt 使用opengl显示yuv实时视频流 上述参考文章中 qt 使用opengl显示yuv实时视频流 主要是介绍yuv420p存储方式的openGL渲染
  • 网页的基本信息

  • springboot2.6.4整合elasticsearch7.15.2

    之前跟着老师的视频安装了一个es6 4 3 视频里说 6 gt 7 类型逐渐被废弃 版本变化较大 与springboot不兼容 建议安装6 4 3与内部一致 我就很天真的跟着一块装了 结果可想而知 我的springboot版本是2 6 4啊
  • chrome linux arm64,谷歌浏览器为何还没发布ARM64原生版?高通表示非技术而是政策问题...

    高通与微软合作的Windows 10 ARM 设备目前发展并不顺利 尽管愿景很美好但愿购买此类设备的用户并不多 用户不愿意购买的原因其实有多种 但是可能最大的问题就是此类设备的兼容性并没有传统笔记本电脑的那么好 例如传统桌面软件理论上说是不
  • 手把手教你手工焊接贴片元件(图文教程)

    一 贴片电容 1 首先来张全部焊接一个点的PCB图 2 当然这是焊接贴片的必须工具 3 这个是准备焊接的DD 晕倒 稍不小心会不见 4 夹一个的姿势 6 先用烙铁加热焊点 7 然后夹个贴片马上过去 8 等贴片固定后焊接另外一边 二 M290
  • sql从查询结果创建一个临时表

    从查询结果创建一个临时表 临时表随数据库的关闭而自动消失 不占内存空间 创建临时表的方法与创建永久表的方法相似 只不过在新表的名称前加一个 号或两个 号 一个 号表示创建的是局部的临时表 两个 号表示创建的是全局临时表 示例 在 cours
  • 调用模板类出现 undefined reference 错误的解决方法

    g 不支持模板类的分离编译 因此模板的实现最好都些在 h文件中 否则将出现undefined reference to XXXX 的错误 下面是一个出错的例子 解决方法就是将stack cc中的代码移到stack h中 01 02 03 i