類模板h和cpp分離編寫(補充)
阿新 • • 發佈:2019-02-09
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;
};