1.問題引入:當使用類模板的成員函式的具體實現與宣告分別寫在不同的檔案時,出現錯誤,使用vs作為ide。
錯誤**:
main.cpp
#include
"person.h"
void
test01()
intmain()
person.h
#pragma once
#include
#include
using namespace std;
template
class person
;
person.cpp
#include
"person.h"
template
person::
person
(t1 name, t2 age)
template
void person::
showperson()
執行上面的**,就會出現鏈結錯誤。
原因分析:因為類模板的成員函式,是在例項化物件之後,呼叫時才會建立,所以在main函式所在檔案包含類宣告的person.h標頭檔案,編譯器無法檢視到person.cpp裡的函式實現**,導致出錯。
把宣告和具體實現都寫在標頭檔案裡,並且把頭檔案字尾寫為hpp。在main函式所在檔案裡包含hpp檔案。
即person.hpp
#pragma once
#include
#include
using namespace std;
template
class person
;//類外實現
template
person::
person
(t1 name, t2 age)
template
void person::
showperson()
類模板分檔案編寫
示例 person.hpp中 pragma once include using namespace std include templateclass person 建構函式 類外實現 templateperson person t1 name,t2 age 成員函式 類外實現 templatev...
C 模板類的分檔案編寫問題及解決
pragma once include include using namespace std templateclass person include pch.h include person.h templateperson person t1 name t2 age templatevoid ...
c 類模板之分檔案編寫問題及解決
我們在實際專案中一般習慣標頭檔案 h 和原始檔 cpp 分開寫,這樣做的好處良多,但是如果遇到了類模板,這樣可能會有一點兒問題。我們通過乙個例子來看 person.h 1 pragma once 2 include 3 include4 using namespace std 56 template...