鍍金池/ 問(wèn)答/C++/ c++ 模板類引入頭文件報(bào)錯(cuò)

c++ 模板類引入頭文件報(bào)錯(cuò)

main
clipboard.png

clipboard.png
clipboard.png

clipboard.png

我覺(jué)得很奇怪,當(dāng)我直接引入cpp文件時(shí),不會(huì)報(bào)錯(cuò),正常運(yùn)行,或者我不單獨(dú)寫一個(gè)類文件,直接在main文件中寫,也沒(méi)有問(wèn)題,為啥我直接引入hpp頭文件時(shí),就報(bào)錯(cuò)呢?

回答
編輯回答
傲寒
  1. 模板盡量還是不要分離寫
  2. 針對(duì)你的問(wèn)題,其中最簡(jiǎn)單的解決辦法是main.cpp里面#include"TemplateArray.cpp"
  3. 或者把全部的實(shí)現(xiàn)都放在TemplateArray.hpp
2017年1月8日 02:43
編輯回答
憶當(dāng)年

模板類是根據(jù)不同的type來(lái)編譯多份的.o文件,根據(jù)需要鏈接
而這做法的根本原因是:C++和C一樣是靜態(tài)編譯語(yǔ)言,不能動(dòng)態(tài)解析
解決辦法:
全部寫到頭文件里面即可,如果還不行,感覺(jué)與以往的.c與.h文件分離有違背規(guī)范,可以參考stl做法
相反,普通的class是可以將聲明與實(shí)現(xiàn)分類的
因?yàn)槠胀ǖ腸lass僅僅是針對(duì)一個(gè)type,不需要編譯多份.o文件。
望采納謝謝啦

2017年1月11日 12:31