c 類模板之分檔案編寫問題及解決

2022-08-24 11:33:12 字數 1814 閱讀 8759

我們在實際專案中一般習慣標頭檔案(.h)和原始檔(.cpp)分開寫,這樣做的好處良多,但是如果遇到了類模板,這樣可能會有一點兒問題。

我們通過乙個例子來看:

person.h:

1

#pragma once

2 #include

3 #include4

using

namespace

std;

56 template

7class

person ;

person.cpp:

1 #include"

person.h"2

3 template

4 person::person(nametype name,agetype age)59

10 template

11void person::show()

12

main.cpp:

1 #include2

using

namespace

std;

3 #include "

person.h"4

void

test()59

intmain()

10

編譯發現如下錯誤:

錯誤原因分析:

由於類模板的成員函式是執行時才會建立,所以分檔案編寫時編譯器找不到成員函式的實現

問題解決:

方法一(不推薦)

直接在main.cpp裡將person.cpp包含進來,如下所示:

1 #include2

using

namespace

std;

3 #include "

person.cpp"4

void

test()59

intmain()

10

方法二(推薦)

將person.h、person.cpp的內容全部放入同乙個檔案person.hpp中,然後在main.cpp中將person.hpp包含進來即可

person.hpp:

1

#pragma once

2 #include

3 #include4

using

namespace

std;

56 template

7class

person ;

1415 template

16 person::person(nametype name, agetype age)

1721

22 template

23void person::show()

24

view code

main.cpp:

1 #include2

using

namespace

std;

3 #include "

person.hpp"4

void

test()59

intmain()

10

view code

執行結果:

總結:模板類不要分檔案編寫,寫到乙個類中即可

C 模板類的分檔案編寫問題及解決

pragma once include include using namespace std templateclass person include pch.h include person.h templateperson person t1 name t2 age templatevoid ...

類模板分檔案編寫

示例 person.hpp中 pragma once include using namespace std include templateclass person 建構函式 類外實現 templateperson person t1 name,t2 age 成員函式 類外實現 templatev...

C 類模板分檔案

問題 類模板的成員函式是在呼叫時才被建立,導致分檔案編寫時呼叫不到。解決 1.直接包含cpp檔案 2.將宣告和實現寫到同乙個檔案中,並更該字尾名為.hpp,hpp是約定的名字,並不是強制 標頭檔案 person.hpp include using namespace std template cla...