成员模板

#include "head.h"

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;
	hold<int> n;

public:
	Beta(T t,int i):q(t),n(i){}
	template<typename U>
	U blab(U a,T b)
	{
	        return (((q.value+n.value())*a)/t);
	}
	void show() const
	{
		q.show();
		n.show();
	}
};


/*
template<typename T>
class Beta
{
private:
	template<typename V>
	class hold;
	hold<T> q;
	hold<int> n;

public:
	Beta(T t,int i):q(t),n(i){}
	template<typename U>
	U blab(U a,T b);
	void show() const
	{
		q.show();
		n.show();
	}
};

template<typename T>
template<typename V>
class Beta<T>::hold
{
private:
	V val;
public:
	hold(V v):val(v){}
	V value()const {return val;}
	void show()const {cout<<val<<endl;}
};

template<typename T>
template<typename U>
U Beta<T>::blab(U a,T b)
{
	return (((q.value()+n.value())*a)/b);
}

*/




int main()
{
	Beta<double> t(3.5,3);
	t.show();

	cout<<t.blab(10,2.3)<<endl;
	cout<<t.blab(10.0,2.3)<<endl;
	cout<<"Done"<<endl;

	return 0;
}

两种方法:一种是class里面声明且定义。一种是class里面declaration,但是在类外面definition

注意class外面definition的时候,由于template是nested(潜入)的,因此须使用句法:

template<typename T>
template<typename U>
而不是

template<typename T,typename V>

定义还须之处hold和blab是Beta<T>class的成员,通过使用作用域解析操作符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值