关于c++中模板 T 无法限制的替代方案template

时间:2021-08-10 17:29:52

在泛型编程成,经常要比较元素的大小,但是有时候我们无法完成规定T 必须拥有比较的接口。

所以我们这里通过函数指定,T需要提供的比较内容

template<typename T>
int DefauletCMP(T a,T b)
{
	if(a<b)
		return -1;
	if(a>b)
		return 1;
	if(a==b)
	{
		return 0;
	}

}
template<typename T>
class Test 
{
private:
	T value;
	typedef int (*CMP)(T a,T b);
	CMP CMP1;
public:
 Test()
 {
	 CMP1=DefauletCMP<T>;
	 cout<<"init test"<<endl;

 }

 bool isBig(T a,T b)
 {
	 if(CMP1(a,b)==0)
		 return true;
	 else
	 {
		 return false;
	 }
 }
};


int main()
{
	Test<int>he;
	if(he.isBig(12,13))
		cout<<"big"<<endl;
	else
		cout<<"littele"<<endl;
	getchar();

}

CMP为比较接口,默认使用类operator <