您好,我正在努力掌握仿函数。这是一个简单的例子
struct A {
double b,c;
A(const double bb, const double cc) : b(bb), c(cc) {}
double operator()(const double x, const double y) {
return b*c*x*y;
}
};
我想知道是否可以重载A以使其可以传递b
,c
以及例如x
重用operator()
中的代码。我的整体兴趣是不必多次在运算符中重写冗长的代码,并且更好地理解执行此操作的最佳实践。
谢谢!
答案 0 :(得分:0)
执行此操作的一种方法是使用std::bind
中的<functional>
。这将返回一个可以不带参数调用的闭包。另一种方法是使用a
和b
或派生类的默认参数创建一个新构造函数,并将其重载为:
double operator()(const double x = m_x, const double y = m_y);
作为旁注,请不要对成员函数的成员和参数使用相同的名称;如果你稍后重命名参数,会产生歧义,甚至可能导致错误。
答案 1 :(得分:0)
我想知道是否可以重载A使得它可以通过b,c以及例如x重用operator()中的代码。
是的,这样做并不难。
<span class="check-status"><a href="status.php" >Your status is pending</a></span>