C++ //类模板分文件编写问题及解决 //第一中解决方式 直接包含源文件 //第二种解决方法 将.h 和 cpp的内容写到一起,将后缀改为.hpp文件
1 //第一种方式被注释
2 //未被注释是第二种方式
3 //类模板分文件编写问题及解决
4
5
6 #include <iostream>
7 #include <string>
8 #include<fstream>
9 //第一中解决方式 直接包含源文件
10 //#include"person.cpp"
11
12
13 //第二种解决方法 将.h 和 cpp的内容写到一起,将后缀改为.hpp文件
14
15 #include"person.hpp"
16
17
18 using namespace std;
19 //
20 //template<class T1,class T2>
21 //class Person
22 //{
23 //public:
24 // Person(T1 name,T2 age);
25 //
26 // void showPerson();
27 //
28 // T1 m_Name;
29 // T2 m_Age;
30 //};
31
32 //template<class T1,class T2>
33 //Person<T1, T2>::Person(T1 name, T2 age)
34 //{
35 // this->m_Name = name;
36 // this->m_Age = age;
37 //}
38 //
39 //template<class T1, class T2>
40 //void Person<T1, T2>::showPerson()
41 //{
42 // cout << "name= " << this->m_Name << " 年龄:" << this->m_Age << endl;
43 //}
44 //
45 void test01()
46 {
47 Person<string, int>p("Jerry", 52);
48 p.showPerson();
49 }
50 int main()
51 {
52
53 test01();
54
55
56 system("pause");
57
58 return 0;
59
60 }
1 person.hpp
2
3 #pragma once
4 #include <iostream>
5 using namespace std;
6
7 #include <string>
8 #include<fstream>
9
10
11 template<class T1, class T2>
12 class Person
13 {
14 public:
15 Person(T1 name, T2 age);
16
17 void showPerson();
18
19 T1 m_Name;
20 T2 m_Age;
21 };
22 template<class T1, class T2>
23 Person<T1, T2>::Person(T1 name, T2 age)
24 {
25 this->m_Name = name;
26 this->m_Age = age;
27 }
28
29 template<class T1, class T2>
30 void Person<T1, T2>::showPerson()
31 {
32 cout << "name= " << this->m_Name << " 年龄:" << this->m_Age << endl;
33 }
1 person.cpp
2
3 //#include "person.h"
4 //
5 //
6 //template<class T1, class T2>
7 //Person<T1, T2>::Person(T1 name, T2 age)
8 //{
9 // this->m_Name = name;
10 // this->m_Age = age;
11 //}
12 //
13 //template<class T1, class T2>
14 //void Person<T1, T2>::showPerson()
15 //{
16 // cout << "name= " << this->m_Name << " 年龄:" << this->m_Age << endl;
17 //}

C++ //类模板分文件编写问题及解决 //第一中解决方式 直接包含源文件 //第二种解决方法 将.h 和 cpp的内容写到一起,将后缀改为.hpp文件的更多相关文章
- c++类模板分文件编写存在的问题
c++分文件编写的编译机制: 各个文件独立编译,如果在某.cpp文件中出现了函数调用,但是在此.cpp文件并没有对应函数的实现.此时就会在函数调用出生成特定的符号,在之后的链接过程完成函数调用. C+ ...
- 向JSP中静态导入HTML文件时,运行jsp时,html中中文产生乱码问题最简单的解决方法
在保证其他的编码格式一致的情况下 在html标签内,head标签外添加一下代码时可以完美解决 亲测 <%@page pageEncoding="UTF-8"%>
- 【C++ 泛型编程01:模板】函数模板与类模板
[模板] 除了OOP外,C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板 函数模板 函数模板作用 建立一个通用函数,其函数返回值类型和形参类型可以 ...
- Pdf File Writer 中文应用(PDF文件编写器C#类库)
该文由小居工作室(QQ:2482052910) 翻译并提供解答支持,原文地址:Pdf File Writer 中文应用(PDF文件编写器C#类库):http://www.cnblogs.com/ ...
- C++函数模板&类模板
函数模板 模板概念及语法 主要目的,简化代码,减少重复代码.基本语法格式: template<class T> 或者 template<typename T> //末尾不加分 ...
- C++解析(26):函数模板与类模板
0.目录 1.函数模板 1.1 函数模板与泛型编程 1.2 多参数函数模板 1.3 函数重载遇上函数模板 2.类模板 2.1 类模板 2.2 多参数类模板与特化 2.3 特化的深度分析 3.小结 1. ...
- C++类模板和模板类
C++ 中有一个重要特性,那就是模板类型.类似于Objective-C中的泛型.C++通过类模板来实现泛型支持. 1 基础的类模板 类模板,可以定义相同的操作,拥有不同数据类型的成员属性. 通常使用t ...
- 【校招面试 之 C/C++】第2题 函数模板、类模板、特化、偏特化
1.C++模板 说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板.我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样 ...
- 【C++】C++中的类模板
基础的类模板 模板类的继承 内部声明定义普通模板函数和友元模板函数 内部声明友元模板函数+外部定义友元模板函数 声明和定义分别在不同的文件(模板函数.模板友元) C++中有一个重要特性,那就是模板类型 ...
- C++ 函数模板&类模板详解
在 C++ 中,模板分为函数模板和类模板两种.函数模板是用于生成函数的,类模板则是用于生成类的. 函数模板&模板函数 类模板&模板类 必须区分概念 函数模板是模板,模板函数时 ...
随机推荐
- 学到一个编码技巧:用重复写入代替if判断,减少程序分支
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 近期阅读了rust标准库的hashbrown库(也就是一个 ...
- 【验证码逆向专栏】数美验证码全家桶逆向分析以及 AST 获取动态参数
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...
- [置顶] ES篇
环境 第一篇: ES--介绍.安装 第二篇: ES--安装nodejs 第三篇: ES--插件 第四篇: ES--kibana介绍.安装 第五篇: ES--中文分词介绍.下载 第六篇: docker, ...
- linux服务器cup100%问题排查
一.出现问题在发现公司门禁服务无法开门的第一时间,去线上服务器上查看了一下进程的运行情况,具体运行如下: 第一次在查看的时候发现并没有我需要的服务entranceguard进程(图片是后续截图的) 二 ...
- NLP涉及技术原理和应用简单讲解【一】:paddle(梯度裁剪、ONNX协议、动态图转静态图、推理部署)
参考链接: https://www.paddlepaddle.org.cn/documentation/docs/zh/guides/advanced/gradient_clip_cn.html 1. ...
- 【8】python_matplotlib改变横坐标和纵坐标上的刻度(ticks)、sagemath-list_plot()调整图例(legend)中点的数量、Matplotlib画各种论文图
1.python_matplotlib改变横坐标和纵坐标上的刻度(ticks) 用matplotlib画二维图像时,默认情况下的横坐标和纵坐标显示的值有时达不到自己的需求,需要借助xticks()和y ...
- 2.0 熟悉CheatEngine修改器
Cheat Engine 一般简称为CE,它是一款功能强大的开源内存修改工具,其主要功能包括.内存扫描.十六进制编辑器.动态调试功能于一体,且该工具自身附带了脚本工具,可以用它很方便的生成自己的脚本窗 ...
- 面试谈薪4点博弈策略,将20k谈到28k
薪资谈判本质上是一种博弈,无论是表面谈得好还是实质上谈得好,都需要掌握一些策略 面试薪资怎么谈,您目前的薪资是20k,如果您想要提高到28k,那么请花两分钟看完以下内容.薪资谈判本质上是一种博弈,无论 ...
- 设计模式-1 单例模式 SingletonPattern
23种设计模式 一.创建型 1,AbstractFactory(抽象工厂,对象模式) 2,Builder(建造者,对象模式) 3,Factory Method(工厂方法,类创模式) 4,Prototy ...
- mybatis SQL in() 为什么要在 mapper.xml里 用 foreach
结论: 若存在 in () 语句,要使用 #{} 预编译入参的方式,需要在 mapper.xml里 使用 foreach ======================================= ...