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.pswp.cn/diannao/73211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73211.shtml
英文地址,請注明出處:http://en.pswp.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;物聯網的觸角已深入到生活與生產的每一個角落。 而…