C++クラステンプレートのファイル作成
7126 ワード
質問:クラステンプレートのメンバー関数の作成タイミングは呼び出しフェーズであり、ファイル作成時に にリンクされない.
解決:解決方法1:直接含む.cppソースファイル 解決策2:宣言と実装を同じファイルに書き、接尾辞名を変更する.hpp,hppは約束の名前であり,強制 ではない.
person.hpp中コード:
クラステンプレートはファイルに分けて作成する.cpp中コード
主流の解決方法は2つ目で、クラステンプレートのメンバー関数を一緒に書き、接尾辞名を変更する.hpp
解決:
person.hpp中コード:
#pragma once
#include
using namespace std;
#include
template<class T1, class T2>
class Person {
public:
Person(T1 name, T2 age);
void showPerson();
public:
T1 m_Name;
T2 m_Age;
};
//
template<class T1, class T2>
Person<T1, T2>::Person(T1 name, T2 age) {
this->m_Name = name;
this->m_Age = age;
}
//
template<class T1, class T2>
void Person<T1, T2>::showPerson() {
cout << " : " << this->m_Name << " :" << this->m_Age << endl;
}
クラステンプレートはファイルに分けて作成する.cpp中コード
#include
using namespace std;
//#include "person.h"
#include "person.cpp" // 1, cpp
// 2, , .hpp
#include "person.hpp"
void test01()
{
Person<string, int> p("Tom", 10);
p.showPerson();
}
int main() {
test01();
system("pause");
return 0;
}
主流の解決方法は2つ目で、クラステンプレートのメンバー関数を一緒に書き、接尾辞名を変更する.hpp