示例代码:
class Sum{
public:
void value(int val){_v = val;}
int add(int val){return _v + val;}
private:
int _v;
};
Sum sum;
sum.value(5);
int myResult = sum.add(10);
是否可以设置sum.add(10)
默认值,以便我可以得到相同的结果:
int myArea = sum(10);
(我怀疑问题标题是错误的,也许这就是我找不到解决方案的原因。随意编辑。)
答案 0 :(得分:3)
是的,你可以。您可以做的是重载类的operator()
以将其转换为仿函数。你可以添加
int operator()(int val) { return add(val); }
到班级,现在sum(some_value)
与sum.add(some_value)
答案 1 :(得分:2)
具体是function call operator的用途。
class Sum{
public:
void value(int val){ _v = val; }
int add(int val) const{ return _v + val; }
// Function call operator
int operator()(int val) const {
return add(val);
}
private:
int _v;
};
int main()
{
Sum sum;
sum.value(5);
// Calls the function call operator
int myResult = sum(10);
}