我将所有内容都放入一个源文件中,并上传到pastebin以便于调试。
我的问题出在后缀增量运算符上。
在我的输出中,我得到了这个信息:
DC.QUOTE.ToList()
当我期望这样的时候:
Preincrement expressions:
(-11 - 2i)
(-117 + 44i)
Postincrement expressions:
(-1.07374e+08 - 1.07374e+08i)
(-1.07374e+08 - 1.07374e+08i)
After postincrement expressions:
(-1199 - 718i)
(-922077 + 1.72176e+06i)
我收到一个奇怪的输出,关于“预增量表达式”。在调试期间,我可以看到临时对象中存储的值是正确的,直到需要格式化和输出它们为止。
在此方面的任何帮助将不胜感激!
答案 0 :(得分:0)
只需在后缀运算符++的返回类型中删除“&”即可:
// h
Complex operator++(Complex &a, int); //Post
// cpp
Complex operator++(Complex &a, int) //Post
{
Complex temp(a.r, a.i);
a.cube(temp);
return temp;
}
Postfix运算符应按值而不是引用返回对象。否则,您将返回对局部变量的引用,这是错误的做法。