首页 > 编程语言 >C++之类模板的分文件编写问题以及解决

C++之类模板的分文件编写问题以及解决

时间:2022-08-14 10:11:29浏览次数:54  
标签:文件 age C++ Person cpp 编写 include 模板

C++之类模板的分文件编写问题以及解决


建议模板不要分文件编写
image=300

Person.h文件

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

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

Person.cpp文件

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

Main.cpp文件

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

void test01(){
	Person<string,int> p("猪八戒",12);
	p.showPerson();
}

int main()
{
	test01();
	system("pause"); 
	return EXIT_SUCCESS; 
}

运行上面程序会报错,原因是无法解析的外部命令。
解决方法,将main.cpp中的#include "Person.h" 改成#include "Person.cpp".
C++是单元编译的,每个文件单独编译。
因为是模板类,.h文件和.cpp文件链接不到。
image


image
模板的成员函数在运行的时候才会去创建。

标签:文件,age,C++,Person,cpp,编写,include,模板
From: https://www.cnblogs.com/lofly/p/16584871.html

相关文章

  • HR面模板(持续更新中)
    HR面:一般问题:1.自我介绍(主要讲能突出自己的经历,会的编程技术一语带过)。2.你觉得你有什么优点和缺点?如何克服这些缺点?3.说一件大学里你自己比较有成就感的一件事情,为此......
  • C++之友元函数
    C++之友元函数某些地方可以访问,某些地方不可以访问。#include<iostream>usingnamespacestd;#include<string>classBuilding{ //让全局的好朋友函数变成类......
  • 【学习笔记/模板】扫描线 周长并
    先开坑,晚上再写。P1856[IOI1998][USACO5.5]矩形周长PictureCode#include<cstdio>#include<algorithm>usingnamespacestd;constintMAXN=1e5+10;intn,......
  • C++之常函数和常对象
    C++之常函数和常对象为了让this指向的成员属性值不可更改,在函数的实现前边加上const.voidshowInfo()const//常函数不能修改指针指向的值{ this->m_A=1000;......
  • 如何可视化编写和编排你的 K8s 任务
    作者:学仁简介K8sJob是Kubernetes中的一种资源,用来处理短周期的Pod,相当于一次性任务,跑完就会把Pod销毁,不会一直占用资源,可以节省成本,提高资源利用率阿里任务调度......
  • [ 模板 ] 求凸包面积
    先求凸constintN=1e6;structPoint{doublex,y;doubleoperator^(constPoint&b)const{returnx*b.y-y*b.x;}};Pointstackk[N];......
  • C++ timed_mutex
    #include<iostream>#include<thread>#include<mutex>std::timed_mutexmutex;voidmythread(){std::chrono::millisecondstimeout(100);//100msstd......
  • VUE学习-基础(基础语法 & 模板语法)
    基础语法引入vue<!--开发环境版本,包含了有帮助的命令行警告--><scriptsrc="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script><!--生产环境版本,优化了尺寸......