C++ 运算符重载--(前缀)

C++ 运算符重载--(前缀),c++,C++,我试过重载运算符--prefix,但我有错误,有人需要帮助吗 #include <iostream> #include "Circulo.h" using namespace std; int main() { //parametrizado Circulo c1(10.5, 20.0, 1, "Rojo Intenso"),c2, c3; /* c2 = c1--; // decrementa, si se puede, el diámetro

我试过重载运算符--prefix,但我有错误,有人需要帮助吗

#include <iostream>
#include "Circulo.h"

using namespace std;

int main()
{
    //parametrizado
    Circulo c1(10.5, 20.0, 1, "Rojo Intenso"),c2, c3;
/*
    c2 = c1--;    // decrementa, si se puede, el diámetro

    c3 = c2++;    // incrementa, si se puede, el diámetro

    Circulo c4 = c3++;

    c4.CambiarColor("Amarillo patito flúo");


    cout << c1 << c2 << c3 << (c4 = c3) << endl;
*/
    return 0;
}

当重载作为成员函数(而不是
友元
)的运算符时,不需要指定其参数

Circulo operator --(const Circulo &obj) const;
应该是

Circulo operator --(); // probably not const, since you modify the instance
该错误告诉您编译器需要一个(伪)
int
,这是编译器用来实现您想要定义后缀
运算符--()
的约定

有关运算符重载的最佳指南之一,请参见(一元算术运算符)

在当前实例上调用这些操作符,如

Circulo c;
--c; // same as c.operator--();
因此,无需指定参数

Circulo operator --(const Circulo &obj) const;

另外,您的实现是不正确的(谢谢@Praetorian),您不需要复制对象,但直接修改实例,然后返回对
*this
(对于前缀
操作符--()
)的引用。

当您重载作为成员函数(而不是
朋友
)的操作符时,您不需要指定其参数

Circulo operator --(const Circulo &obj) const;
应该是

Circulo operator --(); // probably not const, since you modify the instance
该错误告诉您编译器需要一个(伪)
int
,这是编译器用来实现您想要定义后缀
运算符--()
的约定

有关运算符重载的最佳指南之一,请参见(一元算术运算符)

在当前实例上调用这些操作符,如

Circulo c;
--c; // same as c.operator--();
因此,无需指定参数

Circulo operator --(const Circulo &obj) const;

另外,您的实现是不正确的(谢谢@Praetorian),您不需要复制对象,但直接修改实例,然后返回对
*this
(对于前缀
操作符--()
)的引用。

当您重载作为成员函数(而不是
朋友
)的操作符时,您不需要指定其参数

Circulo operator --(const Circulo &obj) const;
应该是

Circulo operator --(); // probably not const, since you modify the instance
该错误告诉您编译器需要一个(伪)
int
,这是编译器用来实现您想要定义后缀
运算符--()
的约定

有关运算符重载的最佳指南之一,请参见(一元算术运算符)

在当前实例上调用这些操作符,如

Circulo c;
--c; // same as c.operator--();
因此,无需指定参数

Circulo operator --(const Circulo &obj) const;

另外,您的实现是不正确的(谢谢@Praetorian),您不需要复制对象,但直接修改实例,然后返回对
*this
(对于前缀
操作符--()
)的引用。

当您重载作为成员函数(而不是
朋友
)的操作符时,您不需要指定其参数

Circulo operator --(const Circulo &obj) const;
应该是

Circulo operator --(); // probably not const, since you modify the instance
该错误告诉您编译器需要一个(伪)
int
,这是编译器用来实现您想要定义后缀
运算符--()
的约定

有关运算符重载的最佳指南之一,请参见(一元算术运算符)

在当前实例上调用这些操作符,如

Circulo c;
--c; // same as c.operator--();
因此,无需指定参数

Circulo operator --(const Circulo &obj) const;

此外,您的实现是不正确的(谢谢@Praetorian),您不需要复制对象,而是直接修改实例,然后返回对
*this
的引用(对于前缀
操作符--()
).

“这是一个很好的原型参考。错误消息字面上告诉您如何修复它。”这是一个很好的原型参考。错误消息字面上告诉您如何修复它。这是一个很好的原型参考。错误消息字面上告诉您如何修复它。这是一个很好的原型参考错误消息会准确地告诉您如何修复它。他现在的实现也会复制操作数,而不是修改操作数,这在predecrement中并不常见。@Praetorian是,indeed@LightnessRacesinOrbit添加了伪:)他现在的实现也会复制,而不是修改操作数,这不是典型的圣职前仪式。@Praetorian是的,indeed@LightnessRacesinOrbit添加了伪:)他现在的实现也复制了一个操作数,而不是修改操作数,这在预录中并不常见。@Praetorian是, indeed@LightnessRacesinOrbit添加了伪:)他现在的实现也复制了一个操作数,而不是修改操作数,这在预录中并不常见。@Praetorian是,indeed@LightnessRacesinOrbit添加了虚拟对象:)