C++类模板
来源:互联网 发布:电脑修复软件 编辑:程序博客网 时间:2024/06/05 17:09
1、类模板、类模板中含有成员模板
首先看例子:
test.h文件
#ifndef TEST_H#define TEST_H//定义类模板基类,还是普通类的成员模板?template<typename T>class baseclass {public:baseclass(){};~baseclass(){};void setA(T n);T getA();template<typename TT> void print(TT n);public:T a;};#endif//TEST_Htest.cpp文件
#include "stdafx.h"#include "test.h"#include<iostream>using namespace std;template<typename T>template<typename TT>void baseclass<T>::print(TT n){cout << "类模板的成员模板:" << n << endl;}template<typename T>void baseclass<T>::setA(T n){a = n;}template<typename T>T baseclass<T>::getA(){return a;}main.cpp文件(实现类模板对象)
#include "stdafx.h"#include<iostream>#include "test.h"#include<string>#include "test.cpp"using namespace std;int _tmain(int argc, _TCHAR* argv[]){baseclass<int> base1;base1.setA(10);cout << base1.a << endl;cout << base1.getA() << endl;base1.print(10);baseclass<string> base2;base2.setA("hello");cout << base2.getA() << endl;base2.print(1000);//访问类模板的成员模板,不用特地去显示的指出成员模板类型,会自己识别base2.print("world");return 0;}
在main.cpp中如果不include"test.cpp"会报错:
error LNK2019: 无法解析的外部符号 "public: void __thiscall baseclass<int>::setA(int)" (?setA@?$baseclass@H@@QAEXH@Z),该符号在函数 _wmain 中被引用F:\ProjectBackup\VS2016Project\0511\0511\0511.obj0511
据说还有种解决方法是添加进虚拟目录(还不知道什么意思……)
2、类模板的继承和派生
假设继承基类baseclass,在派生类的继承列表中一定要指定基类的类模板类型
class derivedclass : public baseclass<int>{public:derivedclass(int size):size(size){};~derivedclass(){};void setb(int b){this->b = b;}private:int b;const int size;};实例化这样的派生类,语法与一般派生类无差。
阅读全文
0 0
- 【c/c++】类模板
- 【C/C++】模板类
- 【c++】模板和模板类
- C/C++:函数模板与类模板
- [C/C++]模板函数与模板类
- c++vector模板类
- c++vector模板类
- c++:类模板
- [C++]类模板
- C++:类模板
- 【c++】类模板
- C++stack模板类
- 类模板与模板类(C++)
- C++,template,类模板和函数模板
- C++:函数模板、类模板及其特化
- C++---函数模板与类模板
- Linux C/C++ 模板:类模板(主模板)
- C/C++_log2000_函数模板与类模板笔记1
- 二分图匹配——BZOJ1191/Luogu2319 [HNOI2006]超级英雄
- golang日記
- C 语言读书笔记集合(乱序版)
- 1.Java的I/O演进之路
- Visual Studio 连接SQL Server数据库
- C++类模板
- ECNU Problem #3247 铁路修复计划(MST + 二分)
- Java知识
- 实习第一天:mybites的学习笔记(纯手打)
- linux touch
- 离散
- The content of the adapter has changed but ListView did not receive a notification
- 文件描述符fd与FILE
- Java----匿名内部类与适配器模式