C++ 提高教程 -模板 类模板分文件编写

 

第一种解决方式,直接包含源码

 类模板中的成员函数一开始不会创建的,当包含.h的时候,相当于把一下代码给编译器看着了

# include<iostream>
using namespace std;

template<class T1, class T2>
class Person
{
public:
	Person(T1 name, T2 age);
	void showPerson();

	T1 m_Name;
	T2 m_Age;
};

看着代码后,不会生成Person()和showPerson()两个函数,所以最后在链接阶段的时候,两个成员函数找不到,无法链接。如果直接去包含Cpp,相当于让编译器直接去看这段代码,包含.h文件。

# include "Person.h"

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;
}

第二种解决方式,将我们的.h和.cpp内容写到一起,将后缀名改为.hpp文件

#pragma once
# include<iostream>
using namespace std;

template<class T1, class T2>
class Person
{
public:
	Person(T1 name, T2 age);
	void showPerson();

	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;
}

主函数

# include<iostream>
# include"Person.hpp"
using namespace std;

//类模板分文件编写问题及解决
//template<class T1, class T2>
//class Person
//{
//public:
//	Person(T1 name, T2 age);
//	void showPerson();
//
//	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;
//}

//类模板中的成员函数一开始不会创建的,当包含.h的时候,
void test01()
{
	Person<string, int>p("Terry",18);
	p.showPerson();
}

int main()
{
	test01();
	system("pause");
	return 0;
}
全部评论

相关推荐

孙艹肘:校招不给三方直接让实习我都去了,,主打一个在学校呆着也是闲着,不如出来实习一下
点赞 评论 收藏
分享
11-23 15:33
已编辑
门头沟学院 Java
CUTMR:换账号试试重启推荐算法,我换账号之后回复率还不错,约莫有个20%左右的消息回复率,前几页、主动招呼的HR也开始符合我期望薪资,此前的大号从招呼、回复、前几页的岗位薪资在涨幅30%+以上 用着用着聊着聊着就变成-20%,而且我开通会员之后直接0面试
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务