C++编译问题——1模板函数的实现必须在头文件中

今天编译数据结构时,遇见一个编译错误

假设你有一个头文件 SeqList.h 和一个源文件 SeqList.cpp。
SeqList.h

#ifndef SEQLIST_H
#define SEQLIST_H#include <stdexcept>
#include <iostream>template<typename T>
class SeqList {
private:static const int MAX_SIZE = 100;T data[MAX_SIZE];int length;
public:SeqList();void insert(int index, T value);// 其他成员函数声明
};#endif

SeqList.cpp

#include "SeqList.h"template<typename T>
SeqList<T>::SeqList() : length(0) {}template<typename T>
void SeqList<T>::insert(int index, T value) {if (length >= MAX_SIZE) {throw std::overflow_error("List is full");}if (index < 0 || index > length) {throw std::out_of_range("Index out of range");}for (int i = length; i > index; i--) {data[i] = data[i - 1];}data[index] = value;length++;
}// 其他成员函数实现

main.cpp

#include "SeqList.h"
#include <iostream>int main() {SeqList<int> list;list.insert(0, 10);return 0;
}

编译时报如下错误
在这里插入图片描述

解决办法
模板函数的实现必须在头文件中,因为编译器在实例化模板时需要看到完整的实现。所以,你可以直接把 insert 函数的实现放在头文件里。
SeqList.h

#ifndef SEQLIST_H
#define SEQLIST_H#include <stdexcept>
#include <iostream>template<typename T>
class SeqList {
private:static const int MAX_SIZE = 100;T data[MAX_SIZE];int length;
public:SeqList() : length(0) {}void insert(int index, T value) {if (length >= MAX_SIZE) {throw std::overflow_error("List is full");}if (index < 0 || index > length) {throw std::out_of_range("Index out of range");}for (int i = length; i > index; i--) {data[i] = data[i - 1];}data[index] = value;length++;}// 其他成员函数声明和实现
};#endif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/73211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓实现魔改版 CRC32 算法

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 关于 CRC32 算法介绍可以参考这篇文章&#xff1a;常用加解密算法介绍 标准 CRC32 算法 创建 crc32.cpp&#xff0c;使用 C 实现标准 CRC32 算法 #include …

OneHot编码与OrdinalEncoder编码的区别与应用解析

OneHot编码和OrdinalEncoder编码是两种常见的类别特征编码方式&#xff0c;它们的主要目的是将类别数据转换为数值数据&#xff0c;以便机器学习算法能够处理。下面是对这两种编码方式的详细解释和比较&#xff1a; 一、OneHot编码 1. 定义&#xff1a; OneHot编码是一种将每…

python离线安装

Python Releases for Windows | Python.org 下载包地址widows一般是64bit的包 下载完成后双击&#xff0c;在弹出的首个页面会看到下面的图 第一步&#xff1a;建议手动安装 第二步&#xff1a;一定要勾选把版本加入到Path路径 然后就是无脑下一步&#xff0c;到这一步就可…

Web开发-PHP应用文件操作安全上传下载任意读取删除目录遍历文件包含

知识点&#xff1a; 1、安全开发-原生PHP-文件安全操作 2、安全开发-原生PHP-上传读取删除包含等 3、安全开发-原生PHP-代码审计文件安全 一、演示案例-WEB开发-文件安全-上传下载读取 文件上传 $_FILES&#xff1a;PHP中一个预定义的超全局变量&#xff0c;用于在上传文件时…

自然语言处理:文本聚类

介绍 大家好&#xff0c;博主又来和大家分享自然语言处理领域的知识了。今天给大家分享的内容是自然语言处理中的文本聚类。 文本聚类在自然语言处理领域占据着重要地位&#xff0c;它能将大量无序的文本按照内容的相似性自动划分成不同的类别&#xff0c;极大地提高了文本处…

JavaScript 运算符详解

引言 在 JavaScript 编程中&#xff0c;运算符是用于对数据进行操作的特殊符号。通过使用运算符&#xff0c;我们可以实现各种计算、比较和逻辑判断等功能。JavaScript 中的运算符种类丰富&#xff0c;涵盖了算术、比较、逻辑、赋值等多个方面。下面将详细介绍各类运算符及其使…

基于javaweb的SpringBoot个人健康管理系统小程序微信小程序设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

责任链模式的C++实现示例

核心思想 责任链模式是一种行为设计模式&#xff0c;允许多个对象都有机会处理请求&#xff0c;从而避免请求的发送者与接收者之间的耦合。请求沿着处理链传递&#xff0c;直到某个对象处理它为止。 解决的问题 ​解耦请求发送者与处理者&#xff1a;请求的发送者无需知道具…

Java 无 GUI 浏览器:HtmlUnit 入门及实战 [特殊字符]

文章目录 HtmlUnit 入门功能简介入门案例更多功能HtmlUnit 实战需求页面分析编码参考⭐ 本文目标: HtmlUnit 框架入门HtmlUnit 框架实战:实现 HtmlUnit 访问 Web 页面,并实现 Web 页面按钮点击,同时获取到下载的文件。HtmlUnit 入门 🚀 官网:https://htmlunit.sourcefo…

微软 NativeAOT

微软Native AOT&#xff08;Ahead-Of-Time&#xff09;是.NET平台中一种新的运行模式&#xff0c;它直接将IL&#xff08;Intermediate Language&#xff0c;中间语言&#xff09;代码编译为目标平台的机器码发布&#xff0c;与JIT&#xff08;Just-In-Time&#xff0c;即时编译…

Vue项目搜索引擎优化(SEO)终极指南:从原理到实战

文章目录 1. SEO基础与Vue项目的挑战1.1 为什么Vue项目需要特殊SEO处理&#xff1f;1.2 搜索引擎爬虫工作原理 2. 服务端渲染&#xff08;SSR&#xff09;解决方案2.1 Nuxt.js框架实战原理代码实现流程图 2.2 自定义SSR实现 3. 静态站点生成&#xff08;SSG&#xff09;技术3.1…

Java 枚举

一、简介 Java 枚举是一种强大的工具&#xff0c;其本质上是一个继承自 java.lang.Enum 的类&#xff0c;用于定义一组固定的常量&#xff0c;每个枚举常量都是该枚举类的一个实例。枚举不仅提供了类型安全性&#xff0c;还可以像普通类一样拥有字段、方法和构造函数。枚举的使…

CentOS7安装DNS服务器bind

文章目录 安装DNS服务设置配置文件自定义域名解析完整配置 需求是公司内网服务器无法连接外网&#xff0c;需要在本地搭建DNS服务&#xff0c;这样物理机器迁移到内网后&#xff0c;通过域名解析访问服务 DNS服务器 172.25.14.215 ip域名172.25.14.216mysql.server172.25.14.2…

DFS刷题(25.3.13)

题目1——烤鸡 题目描述 题解 这是一个简单的暴搜题目&#xff0c;由于一共由10种配料&#xff0c;每种配料可以放1到3克&#xff0c;因此只需要用dfs对每种配料放入的质量进行暴力搜索即可&#xff0c;如果放入的配料质量之和等于题目给出的美味程度 n n n&#xff0c;记录一…

C#中除了Dictionary,List,HashSet,HashTable 还有哪些可以保存列表的数据类型?

在 C# 中&#xff0c;除了 Dictionary、List、HashSet 和 Hashtable 之外&#xff0c;还有许多其他可以保存列表或集合类型的数据结构&#xff0c;具体包括以下几类&#xff1a; &#x1f4cc; 数组类 1. Array&#xff08;数组&#xff09; 固定长度&#xff0c;性能高&…

《Python实战进阶》第21集:数据存储:Redis 与 MongoDB 的使用场景

第21集&#xff1a;数据存储&#xff1a;Redis 与 MongoDB 的使用场景 摘要 在现代应用开发中&#xff0c;数据存储的选择直接影响系统的性能、扩展性和成本。Redis 和 MongoDB 是两种极具代表性的数据库技术&#xff0c;它们分别擅长解决不同场景下的问题。本文将深入探讨 Re…

三视图转stl导出 空心面片体 networkx shapely triangle numpy-stl

from shapely.geometry import Polygon import triangle from shapely.ops import unary_union from stl import mesh import numpy as np from collections import defaultdict from 三维投影线段寻找 import get_adjusted_clusters,get_clusters,get_intersect_lines import …

大摩闭门会:250312 学习总结报告

如果图片分辨率不足&#xff0c;可右键图片在新标签打开图片或者下载末尾源文件进行查看 本文只是针对视频做相应学术记录&#xff0c;进行学习讨论使用

【51单片机】程序实验15.DS18B20温度传感器

主要参考学习资料&#xff1a;B站【普中官方】51单片机手把手教学视频 开发资料下载链接&#xff1a;http://www.prechin.cn/gongsixinwen/208.html 单片机套装&#xff1a;普中STC51单片机开发板A4标准版套餐7 目录 DS18B20介绍主要特性内部结构控制时序初始化时序写时序读时序…

ESP32芯片模组方案,设备物联网无线通信,WiFi蓝牙交互控制应用

在当下&#xff0c;物联网正以前所未有的速度席卷全球&#xff0c;从繁华都市的智能建筑&#xff0c;到宁静乡村的智慧农业&#xff0c;从人们日常使用的可穿戴设备&#xff0c;到工业领域复杂精密的自动化生产线&#xff0c;物联网的触角已深入到生活与生产的每一个角落。 而…