类模板分文件编写

发布时间 2024-01-13 17:23:01作者: λios

//mark.hpp
//也就是头文件的引入


#pragma once
template<class NameType,class AgeType>
class mark{
public:
	
	mark(NameType name, AgeType age);

	void printMark();

	NameType name;
	AgeType age;
};

#include<iostream>
template<class NameType, class AgeType>
mark<NameType, AgeType>::mark(NameType name, AgeType age) {
	std::cout << "generate function\n";
	this->name = name;
	this->age = age;
}


template<class NameType, class AgeType>
void mark<NameType, AgeType>::printMark() {
	std::cout << "name:" << this->name << "\nage:" << this->age << '\n';
}




接下来就是主函数所在的文件


#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
#include<numeric>

#include "mark.hpp"

/*
1.调用类模版时,要进行第二次编译,要把泛型的数据类型替换为具体的类型,
这时需要知道函数体,但是函数的实现在.cpp中,那么调用类模版的.cpp没有引入实现:cpp,
只引入.h,所以报错
2.解决方法:把成员函数放到.h中,然后把.h改为.hpp,然后在调用成员函数的地方,引入.hpp
*/


int main() {

	mark<std::string, int> m("123123", 200);
	
	return 0;
}