我想写一个以模板类做为参数的模板,,可惜。。。没成功。

1.从模板参数到模板:这个简单:

//类A是一个模板

template<class T>

class A{

} ;

//类B,想使用类A的模板

template <class T>

class B{

A<T> a;

};

2.从模板到模板参数:

类B想使用类A里面的模板参数:

template <class T>

class A{

typedef T T1;

};

template <class A>

class B{

A::T1 a_t1;

};

实例:

// templatestudy.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <functional>
//谓词
using namespace std;
template <typename _M1_T>
struct LESS:public binary_function<_M1_T,_M1_T,bool>
{
//接受2个参数
bool operator()(const _M1_T& x,const _M1_T&y) const
{
return x<y;
}
};
template <class T>
struct LESS_THAN:public unary_function<T,bool>
{
T arg2;
//构造函数
explicit LESS_THAN(const T& x):arg2(x){}
//接受一个参数的()操作
bool operator()(const T& x) const {
return x<arg2;
}
} ;
//把函数对象模板类中的第二个参数进行约束:
//有两个问题要解决:
//第一:要获取函数对象模板的类型参数。
//第二:对此类型的值进行约束
template<class BinOp>
class _binder2nd:public unary_function<typename BinOp::first_argument_type,typename BinOp::result_type>
{
protected:
BinOp op;
typename BinOp::second_argument_type arg2;
public:
_binder2nd(const BinOp & x,const typename BinOp::second_argument_type&v):op(x),arg2(v){
}
result_type operator()(const argument_type&x) const{
return op(x,arg2);
}
};
//约束第二个参数
int main(int argc, char *argv[])
{
int a=5;
LESS_THAN<int> less_10(10);
less_10(a);
system("PAUSE");
return EXIT_SUCCESS;
}
使用方法:
bind2nd(less<int>(),7);
意思是把less<int>()函数对象,的第二个函数参数绑定为7.

c++ 以模板类作为参数的模板相关推荐

  1. Sophus库(Linux下)的安装(模板类.hpp,非模板类.h)

    都不在home目录下,如果你在home下请把sudo去掉 模板类安装 这通常不会有什么问题,如果有一般是缺依赖->传送门 sudo git clone https://github.com/st ...

  2. 模板类 Template Classes 以及模板类编译时的处理

     我们可以建立template classes,使它们能够神奇地操作任何类型的资料.下面这个例子是让CThree 类别储存三个成员变量,成员函数Min 传回其中的最小值,成员函数Max 则传回其中 ...

  3. C++代码片段(四)萃取模板类的模板参数类型

    例如有类型 Test<int, double, std::string> 可以萃取出模板参数分别是 int, double, std::string 方法如下 #include <t ...

  4. Google Test(GTest)使用方法和源码解析——模板类测试技术分析和应用

    写C++难免会遇到模板问题,如果要针对一个模板类进行测试,似乎之前博文中介绍的方式只能傻乎乎的一个一个特化类型后再进行测试.其实GTest提供了两种测试模板类的方法,本文我们将介绍方法的使用,并分析其 ...

  5. 定义一个类mymath_C++:模板类

    22.模板类 22.1 模板类 模板是泛型编程的基础,那什么是泛型编程呢?泛型编程是一种独立于任何特定数据类型编写代码的方式. C++标准模板库中的数据容器.迭代器和算法,都是泛型编程的例子,它们都使 ...

  6. ASP 模板引擎,ASP 模板类 (Taihom.Template.class)

    ASP 模板引擎 如想获取最新的这个类,可以写邮件给我 '//ASP 模板引擎 (Taihom.Template.class v2.0) '//Code By Taihom '//Taihom 原创 ...

  7. C++ 模板类和友元

    模板类的友元分三类: 1,非模板友元. 2,约束模板友元,即友元的类型取决于类被实例化时的类型. 3,非约束模板友元,即友元的所有具体化都是类的每一个具体化的友元. 1,模板类的非模板友元函数 cou ...

  8. c++模板类(一)理解编译器的编译模板过程

    如何组织编写模板程序 前言 常遇到询问使用模板到底是否容易的问题,我的回答是:"模板的使用是容易的,但组织编写却不容易".看看我们几乎每天都能遇到的模板类吧,如STL, ATL, ...

  9. C++ 模板类与智能指针

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一.实验内容 二.实验过程 1.模板函数 1.1 一般模板函数 1.1 特化模板函数 2.类模板(Queue) 2.1 类 ...

最新文章

  1. matlab数字量转电气量,基于MATLAB的数字PID直流电机调速系统.doc
  2. 分步骤学习自动化测试
  3. java实现递归下降分析_使用递归实现检查未知层级目录中的文件-Java实用技能
  4. Interview:算法岗位面试—10.31下午上海某银行总部公司(二面,四大行之一)之项目简介、比赛介绍、某个比赛的过程
  5. xshell连不上虚拟机linux的解决办法(用的默认NAT模式)
  6. cookie自动登陆
  7. Redis功能强大,那也顶不住被滥用啊!
  8. python tk下拉列表_如何从Tkinter中的列表创建下拉菜单?
  9. mybatis中的xml配置文件中sql语句里的比较符号需要用特殊标签包裹有比较大于和小于条件
  10. 跟我一起学C++课程笔记(第二天)
  11. BZOJ 1146 网络管理Network(树链剖分+BST)
  12. 【考研经验】2018复旦计算机专硕零基础学渣考研经验贴
  13. c语言顺序栈的基本操作
  14. markdown中编写数学公式的常用 latex 语法
  15. 魔百和盒子、中兴盒子、咪咕盒子、华为盒子、华为悦盒、烽火盒子、创维盒子、天邑盒子等运营商盒子固件合集分享
  16. 关于itchat发送图片清晰度的玄学
  17. 计算机继续教育笔记,第三轮继续教育自学读书笔记
  18. 运营管理最新版史蒂文森_《运营管理(英文版第11版注解版国际经典原版教材)》(美)威廉J.史蒂文森著【摘要 书评 在线阅读】-苏宁易购图书...
  19. 孕期、哺乳期吃海鲜注意事项----一洲服务
  20. 【以太坊】雷电网络的101网络原理概述

热门文章

  1. python集合类型的四种操作符_深入解析Python中的集合类型操作符
  2. mysql中主从复制需要的酶_mysql主从复制
  3. android挂载usb设备,android usb挂载分析---MountService启动
  4. ttlsa教程系列之MySQL---MySQL/Galera集群-多主高可用性负载均衡
  5. Snackbar源码分析
  6. 为什么要学网络营销?
  7. mac下常用快捷键整理
  8. 4 . 2 存储系统
  9. Java 抽象类和接口
  10. 【Origin】晨起忆梦