我正在努力学习C++
。我有一些运算符重载函数如下(我从C ++编程语言第四版,第76页):
complex& operator+=(complex z) { re += z.re; im += z.im; return *this; } // add to re and im
// and return the result
complex& operator−=(complex z) { re -= z.re; im -= z.im; return *this; }
complex& operator*=(complex); // defined out-of-class somewhere
complex& operator/=(complex); // defined out-of-class somewhere
+=
重载工作正常,但对于-=
,我得到 10 编译错误:
如果我删除了=
并且只是重载-
运算符,则会进行编译。是什么原因 ?我想知道我做错了什么?我尝试了几种组合,清除重建解决方案,重新启动Visual Studio,但它们没有用。
注意:我正在使用Visual Studio 2013,并且已安装Visual C++ Compiler November 2013 CTP
以下是完整的类定义:
class complex{
double re, im;
// representation: two doubles
public:
complex(double r, double i) :re{ r }, im{ i } {} // construct complex from two scalars
complex(double r) :re{ r }, im{ 0 } {} // construct complex from one scalar
complex() :re{ 0 }, im{ 0 } {} // default complex: {0,0}
double real() const { return re; }
void real(double d) { re = d; }
double imag() const { return im; }
void imag(double d) { im = d; }
complex& operator+=(complex z) { re += z.re; im += z.im; return *this; } // add to re and im
// and return the result
complex& operator−=(complex z) { re -= z.re; im -= z.im; return *this; }
complex& operator*=(complex); // defined out-of-class somewhere
complex& operator/=(complex); // defined out-of-class somewhere
};
答案 0 :(得分:2)
似乎在令牌-=
中还有一些其他符号(似乎是减号还有其他一些字符)
operator−=(
重新输入令牌-=
或从我的帖子中复制整行。:)
complex& operator-=(complex z) { re -= z.re; im -= z.im; return *this; }
答案 1 :(得分:0)
一些事情:
complex(double r, double i) :re(r), im(i) {}
operator-=
部分中有一些奇怪的字符。它看起来不错,但是当我粘贴它时它不会编译。我刚刚重新输入了operator-=
和zip,它起作用了。