|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 ken 于 2011-11-30 20:41 编辑
//12-11 A模板做为B模板的参数
//以下代码在VS2008中可以编译通过, VC6中不行.
//文件“Stack.h”的内容如下
template <class T,int num> //类型参数表
class Stack //Stack类定义
{
private:
T sz[num]; //存储空间,用数组表示
public:
int ReturnNum(); //判断栈是否为空
};
template<class T1,int num1> //参数列表不要求字字相同,但形式要相同
int Stack<T1, num1>::ReturnNum()
{
return num1; //返回数组大小
}
#include <iostream>
//#include "Stack.h"
using namespace std;
template<template<class Type,int NUM> class TypeClass, class T1, int N> //如何理解??谢谢!
void disp() //函数模板,其类型参数表中包含一个类模板
{
TypeClass<T1,N> ob; //类模板的隐式实例化,创建对象ob
cout<<ob.ReturnNum()<<endl; //调用ob的public成员函数
}
int main()
{
disp<Stack,int,8>(); //函数模板的隐式实例化,并调用
system("pause");
return 0;
}
|
|