[英]C++ functors and default parameters
我已经编写了一个仿函数库(基于位于http://www.tutok.sk/fastgl/callback.html的教程)。
目前,我可以编写以下代码:
class MyClass
{
public:
void Test(int a,int b);
};
MyClass c;
Functor2<void,int,int> f=makeFunctor(c,&MyClass::Test);
...
f(1,2);
我想添加另一个功能,以便可以将参数与实际功能绑定(将其向前传递),例如:
Functor0<void> f=makeFunctor(c,&MyClass::Test,3,4);
...
f(); // this will use the default parameters 3,4
我知道boost具有该功能,但我不想使用它-我想自己编写。
我的问题是如何定义函子,在这里我还可以传递要在调用本身中使用的默认参数。 我不想使用boost或std ++的原因是因为此代码是跨平台的,将在某些没有boost的平台上使用。
如果您确实不想(或不能)使用已经解决了此问题的其他人的工作,那么函子的构造函数如何保留您要传递的参数呢?
你不得不收拾这件事(例如包括在模板ARGS的BinaryFunctor的返回类型,顺便说一句,我不是编的!),但这样的事情应该工作
class MyClass
{
public:
void Test(int a,int b);
};
template <class BinaryFunctor, class Arg1, class Arg2>
class Functor0
{
public:
Arg1 _a;
Arg2 _b;
BinaryFunctor _func;
void operator() ()
{
_func(_a, _b);
}
};
MyClass c;
Functor2<void,int,int> f=makeFunctor(c,&MyClass::Test);
f(1,2);
Functor0<Functor,int,int> f2(f,3,4);
f2();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.