C++ 模板

embedded/2024/9/20 9:18:49/ 标签: c++

 模版收尾

模版的声明和定义不能分离,否则会报错.

写下面三个文件:

Stack.h#pragma once
#include<iostream>
using namespace std;
template <class T>
T Add(const T& left, const T& right);
Stack.cpp#include"Stack.h"
template <class T>
T Add(const T& left, const T& right)
{cout << 1 << endl;return left + right;}
Test.cpp#include"Stack.h"
int main()
{Add(1,2);fun();return 0;
}

运行结果:

 如上图所示,模版的声明和定义分离会出现链接错误。

如果我们正常函数的定义和分离就不会出错,比如下图fun函数:

这是刚开始我们把代码加载进内存,运行之后先执行预处理,预处理把"Stack.h"展开。

展开之后就会在Stack.cpp里面找,但是Stack.cpp里面并没有对模版进行实例化,也就找不到地址:

为什么Add预处理阶段找不到地址呢?这是因为在Stack.cpp也就是定义里面Add没有被实例化:

Add是模版,没有实例化,在预编译阶段找不到地址,但是fun我们一开始就定义了是void类型,所以不管是预处理,编译,链接阶段都可以找到它的地址。

解决方案:

1.显示实例化:

缺点:换类型之后还要重新显示实例化,假设我此时这样写:

Add(1.0, 2.0);

 就会报错:

1>Test.obj : error LNK2019: 无法解析的外部符号 "double __cdecl Add<double>(double const &,double const &)" (??$Add@N@@YANABN0@Z),函数 _main 中引用了该符号

 需要再加个类型显示实例化:

template
double Add<double>(const double& left, const double& right);

运行:

1
1

但是这样太麻烦了,干脆不要声明定义分离了,把Stack.cpp删掉,定义全部放到Stack.h里面:


http://www.ppmy.cn/embedded/100724.html

相关文章

【git】如何更改git绑定账号

更换之前同事的git账号&#xff08;gitee仓库&#xff09; 1、公钥配置 公钥的作用&#xff1a;身份验证&#xff0c;免去每次提交或拉去的登录操作。步骤&#xff1a; 1.安装git --> 鼠标右键 --> Git Bash Here -->进入命令窗口 命令一&#xff1a;查看git配置 …

浏览器请求无缝导入apifox(无需客户端,在线使用)方法

不用下载客户端浏览器在线模拟请求&#xff0c;方便快捷&#xff01; 废话不多少&#xff0c;只需三步&#xff0c;往下看&#xff01; 一步&#xff1a; 打开F12 -> 网络 -> 找到你要模拟的请求&#xff0c;右键以cURL格式复制 二步&#xff1a; Apifox 访问Apifox的w…

ReadAgent,一款具有要点记忆的人工智能阅读代理

人工智能咨询培训老师叶梓 转载标明出处 现有的大模型&#xff08;LLMs&#xff09;在处理长文本时受限于固定的最大上下文长度&#xff0c;并且当输入文本越来越长时&#xff0c;性能往往会下降&#xff0c;即使在没有超出明确上下文窗口的情况下&#xff0c;LLMs 的性能也会随…

六. 部署分类器-deploy-classification-advanced

目录 前言0. 简述1. 案例运行2. 补充说明3. 代码分析3.1 main.cpp3.2 trt_worker.cpp3.3 trt_logger.cpp3.4 trt_classifier.cpp3.5 trt_model.cpp3.6 inference部分 结语下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习…

EmguCV学习笔记 VB.Net 6.2 轮廓处理

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

程序运行期发生程序运行期发生ClassNotFoundException

ClassNotFoundException这个错误不陌生, 程序运行时找不大某个类的class文件, 这个在开发时是常有的, 比较容易解决, 但是在一个程序运行时出现这个错误就需要来找一找是什么问题了 一般来说编译正常通过了就不会出现这个问题了, 那么为啥在运行期还会可能报错提示ClassNotFou…

AppenTalk | 不止于赛场,巴黎奥运会上的中国AI科技

当地时间8月11日&#xff0c;第33届夏季奥林匹克运动会在巴黎法兰西体育场落下帷幕。本届奥运会&#xff0c;中国体育代表团收获令人振奋的40金27银24铜总计91枚奖牌&#xff0c;其中金牌数更是创下了境外参加奥运会的最佳成绩。 在中国健儿闪耀奥运赛场时&#xff0c;中国AI科…

python测试框架之Pytest

初识Pytest Pytest1.Pytest的特点&#xff1a;2.Pytest的基本使用规则3.pytest安装1&#xff09;使用编译器安装2&#xff09;使用命令安装 4.pytest规则 Pytest Pytest是python的一个第三方单元测试库&#xff0c;它的目的是让单元测试变得容易&#xff0c;并且也能扩展到支持…

【秋招笔试】8.18大疆秋招(第一套)-后端岗

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 编程一对一辅导 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收…

趋势分享|Gartner解读中国企业容器管理新挑战:混合环境、容器安全、AI支持

不少企业都使用容器管理类软件/平台&#xff0c;方便容器环境的部署和运维。而随着应用系统的运行环境逐渐多元化&#xff0c;IT 运维人员仅依靠容器管理产品&#xff0c;已难以同时兼顾多种 IT 基础设施上的多个应用运行环境。同时&#xff0c;AI 等高性能应用场景的兴起&…

如何选择最佳路线?

交通线路的选择 日常交通线路的选择&#xff0c;并不是按最短路径选择的。还要参考道路的等级&#xff0c;道路是否拥堵&#xff0c;道路通行速度等多种情形。本程序列举出所有能通行的线路&#xff0c;并计算出行驶距离&#xff0c;来供用户选择。当然&#xff0c;也可以加入…

如何从单点到集群配置Eureka:最佳实践与配置详解

如何从单点到集群配置Eureka&#xff1a;最佳实践与配置详解 1. 引言 什么是Eureka&#xff1f; Eureka是Netflix开源的服务发现和注册中心&#xff0c;广泛应用于微服务架构中。它允许各个服务实例在启动时注册到Eureka Server&#xff0c;并通过Eureka Client获取其他服务…

Javascript——static字段

在 JavaScript 中&#xff0c;static 关键字是用来定义类的静态属性和方法的。静态属性和方法属于类本身而不属于类的某个特定实例。这意味着你不需要创建类的实例就可以访问静态属性和方法。 静态属性 静态属性是类级别的属性&#xff0c;它们不会被继承到类的实例中。这些属…

Python关于迭代器的使用例子解析

代码示例&#xff1a; Python 中的迭代器是一种对象&#xff0c;它实现了 __iter__() 和 __next__() 两个基本方法。__iter__() 方法返回迭代器对象本身&#xff0c;而 __next__() 方法返回迭代器的下一个元素。当迭代器中没有更多元素时&#xff0c;__next__() 方法会抛出一个…

pgsql清理表的oids选项

1. 生成脚本 SELECTn.nspname as "Schema",c.relname as "Table",c.relhasoids as "With OIDs", ALTER TABLE || n.nspname ||. || c.relname || SET WITHOUT OIDS; FROMpg_class cJOIN pg_namespace n ON n.oid c.relnamespace WHEREc.relk…

C++动态规划及九种背包问题

目录 目录 一&#xff0c;动态规划 一&#xff09;&#xff0c;动态规划的定义 二&#xff09;&#xff0c;动态规划其他的相关概念&#xff08;也是使用条件&#xff09; 1&#xff0c;重叠子问题 2&#xff0c; 最优子结构 3&#xff0c;无后效性 三&#xff09;&…

[论文笔记]Improving Retrieval Augmented Language Model with Self-Reasoning

引言 今天带来一篇百度提出的关于提升RAG准确率的论文笔记&#xff0c;Improving Retrieval Augmented Language Model with Self-Reasoning。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比如替换"作者"为"我们"。 检索增强语言模型(Retrie…

go国内源设置

一、背景 部分网络环境不稳定、丢包或无法连外网&#xff0c;在编译go代码时&#xff0c;需要更新相关依赖&#xff0c;可通过设置go国内源地址来更新。 二、国内可用镜像源 2.1 镜像源一 https://goproxy.cn 2.2 镜像源二 https://goproxy.io 2.3 镜像源三 https://gop…

SpringBoot集成kafka接收消息

SpringBoot集成kafka接收消息 1、SpringBoot集成kafka接收消息2、Payload注解接收消息体内容3、Header注解接收消息头内容4、接收消息所有内容 1、SpringBoot集成kafka接收消息 生产者 package com.power.producer;import org.springframework.kafka.core.KafkaTemplate; imp…

“万物共生”户外沉浸式展馆光影互动设计,思特科技打造!

01      思特科技助力北京玉渊潭公园 “万物共生” 户外沉浸式展馆光影互动设计&#xff0c;将公园独具特色的人文景观和自然景观相结合&#xff0c;利用数字光影艺术&#xff0c;通过不同形式、不同状态来表现生命的多元化&#xff0c;带来震撼的沉浸式体验。    北京…