如何通过运算符重载来解决“ ...必须是非静态成员函数”

时间:2019-05-18 10:18:12

标签: c++

我正在尝试做我的学校项目,该项目是关于创建一个可以处理分数的库,我实现了许多功能,并且成功地使许多运算符超载,但我只是不明白问题出在哪里。我试图重载=运算符,但我不断得到这个; “ Razlomci运算符=(Razlomci&,const Razlomci&)'必须是非静态成员函数”。不要感到困惑,Razlomci在我的语言中基本上是分数。我感谢所有帮助

我什么也没尝试,因为我不知道该怎么办。

Razlomci operator=(Razlomci &lijevo, const Razlomci &desno) {
Razlomci priv(lijevo.brojnik = desno.brojnik, lijevo.nazivnik = 
desno.nazivnik);
return priv;
}

我只想使用=运算符实际上将一些值添加到分数,而没有其他内容。

class:

class Razlomci {

private:
    int najveciZS(int a, int b) {
        while (a != b) {
            if (a > b) {
                a -= b;
            } else {
                b -= a;
            }
        }
        return a;
    }

public:
    int brojnik, nazivnik;

    Razlomci() {
        brojnik = 0;
        nazivnik = 1;
    }

    Razlomci(int n, int d) {
        if (d==0) {
            cerr << "Unijeti nazivnik ne valja; ne smije biti jednak nuli" << endl;
            exit(0);
        } else if (n == 0) {
            brojnik = 0;
            nazivnik = 1;
        } else {
            int predz = 1;
            if (n < 0) {
                predz *= -1;
                n *= -1;
            }
            if (d < 0) {
                predz *= -1;
                d *= -1;
            }

            int priv = najveciZS(n, d);
            brojnik = n/priv*predz;
            nazivnik = d/priv;
        }
    }};

0 个答案:

没有答案