如何使类的函数默认

时间:2017-01-20 12:44:36

标签: c++ class arduino

示例代码:

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);

(我怀疑问题标题是错误的,也许这就是我找不到解决方案的原因。随意编辑。)

2 个答案:

答案 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);
}