1. 程式人生 > >類模板h和cpp分離編寫(補充)

類模板h和cpp分離編寫(補充)

demo.cpp檔案

#define _CRT_SECURE_NO_WARNINGS
#include "Person.hpp"//如果是Person.h就連結失敗 類模板一般不分開寫
int main(void)
{
    Person<int> xiaoming(6);
    xiaoming.show();
    system("pause");
    return 0;

}
//問題產生
//每個cpp都是單獨編譯  發現函式呼叫,再當前位置找不到,函式位置生成符號
//類模板需要二次編譯,第二次才生成具體函式
//綜上 連結的時候找不到 具體函式

//解決方案
//1.將demo的標頭檔案變成.cpp 可以通過
//2.將Person.cpp 改成.hpp

Person.cpp檔案

#include "Person.h"
 template<class T>
 Person<T>::Person(T age){

     this->age = age;
 }
 template<class T>
 void Person<T>::show(){

     cout << "age:" << this->age << endl;
 }

Person.h檔案

#pragma once
#include<iostream>
using namespace std; template<class T> class Person{ public: Person(T age); void show(); public: T age; };

這裡寫圖片描述