C++ 运算符重载--(前缀)
我试过重载运算符--prefix,但我有错误,有人需要帮助吗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
#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添加了虚拟对象:)