本文介绍了C ++成员函数指针为模板默认参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有可能,像这样的:
模板< typename的C,
typename的R,
类型名A,
类型名F =住宅(丙类:: *)(A)>
类MemberFuncPtr {...
解决方案
事实上,它似乎pretty我的权利,我没有得到任何错误这块code的:
模板< typename的C,
typename的R,
类型名A,
类型名F =住宅(丙类:: *)(A)>
类MemberFuncPtr
{
C&放大器; Cmember;
量F f;
上市:
MemberFuncPtr(C&放大器; C,F FUNC):Cmember(C),F(FUNC){}
- [R DOIT(A和A)
{
返回(Cmember * F。)(a)条;
}
};
类CLASSA
{
上市:
INT toInt(双AA)
{
返回INT(AA);
}
};
诠释的main()
{
CLASSA AINSTANCE;
MemberFuncPtr< CLASSA,整型,双> XX(AINSTANCE,&安培; CLASSA :: toInt);
返回0;
}
您可以观察到code rel=\"nofollow\">。
template< typename C,
typename R,
typename A,
typename F=R (C::*)(A) >
class MemberFuncPtr { ...
Actually,it seems pretty right to me, I do not get any errors for this piece of code:
template< typename C,
typename R,
typename A,
typename F=R (C::*)(A) >
class MemberFuncPtr
{
C & Cmember;
F f;
public:
MemberFuncPtr(C & c, F func):Cmember(c), f(func) {}
R DoIt(A & a)
{
return (Cmember.*f)(a);
}
};
class classA
{
public:
int toInt(double aa)
{
return int(aa);
}
};
int main()
{
classA aInstance;
MemberFuncPtr<classA,int,double> xx(aInstance,&classA::toInt);
return 0;
}
You can observe the code here.
这篇关于C ++成员函数指针为模板默认参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!