類模板分檔案編寫遇到的問題和解決方法

2021-10-02 07:43:08 字數 1173 閱讀 1427

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...