Sub-escritura de archivo C ++ plantilla de clase

problema:

  • plantilla llamada a la función miembro de la clase para crear oportunidades en el escenario, lo que lleva a la preparación de la sub-archivo no se puede vincular

Resuelve :

  • Solución 1: archivo de origen .cpp que contiene directa
  • Solución 2: declarar y poner en práctica escrita en el mismo archivo, y cambiar el .hpp sufijo, nombre de HPP se acuerda, no es obligatorio

person.hpp código:

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

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

Escribir código .cpp en puntos archivo de plantilla de clase

#include<iostream>
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;
}

La segunda solución es la corriente principal, se escribirá con la función miembro de plantilla de clase, y el sufijo de nombre .hpp

Publicado 59 artículos originales · alabanza ganado 15 · vistas 1598

Supongo que te gusta

Origin blog.csdn.net/weixin_43867777/article/details/104301226
Recomendado
Clasificación