C++的模板可用作结构体、类或模板类成员,在此记录一个例子:
#include <iostream>
using std::cout;
using std::endl;
template<typename T>
class beta{
private:
template<typename V> //将模板类定义放在类的私有变量区域,模板类做为私有变量
class hold{
private:
V val;
public:
hold(V v){val=v;}
void show()const{cout<<val<<endl;}
V Value()const{return val;}
};
hold<T> q; //相当于在beta类中包含了hold类的两个实例,所以下面通过这两个对象使用它们的方法
hold<int> n;
public:
beta(T t,int i):q(t),n(i){}
template<typename U> //模板函数做方法
U blab(U u,T t){
return (n.value()+q.value())*u/t;
}
void show()const{
q.show();
n.show();
}
};
int main(){
beta<double> guy(3.5,3);
guy.show();
cout<<guy.blab(10,2.3)<<endl;
cout<<"Done\n";
return 0;
}