我有这个代码:

class DoubleMeanVar{
    protected:
        double m;
        double v;
    public:
        DoubleMeanVar(double x=0) : m(x), v(0) {}
        DoubleMeanVar& operator+=(double x);
        void operator/=(){m = 1; v = 0;}
    };

DoubleMeanVar& DoubleMeanVar::operator+=(double x){
    m+=x;
    v+=x*x;
    return *this;
}

当我运行它时,我遇到了这个错误:
error: ‘void DoubleMeanVar::operator/=()’ must have exactly one argument

在行:



我不明白为什么,我将运算符/ =定义为一种方法,它不需要参数。

最佳答案

即使您不使用它,/=运算符也必须有一个(只有一个)参数。在您的情况下,您可以这样声明它(未使用的参数不需要名称):

    void operator/=(double){m = 1; v = 0;}

尽管您为什么想要/=运算符执行该操作对我来说还是个谜。

关于c++ - 错误: ‘void DoubleMeanVar::operator/=()’必须只有一个参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61543177/

10-11 23:17