【发布时间】:2012-09-05 15:09:03
【问题描述】:
昨天有人给了我一个程序出错。在 MVS 2010 中工作时,我也发现了问题和替代方法。问题是类的重载插入运算符。它的原型如下……
void matrix :: operator << (matrix&) ;
它是从这样的地方调用的......
matrix m ;
m.operator << (m) ;
我发现编译器不允许发送与调用函数的引用参数相同的对象。但我不明白这背后的原因以及它会产生什么问题。如果有人能解释一下,我将不胜感激。 谢谢。
编辑:
实际发生的是,在调试时,它进入函数内部,在执行main 时出来,进入外部依赖文件dbgdel.cpp 并停在这一行。
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
【问题讨论】:
-
写出来的代码没有问题,所以问题一定出在不存在的部分。有什么问题?
-
您遇到了什么编译器或运行时错误?您编写的代码必须小心处理自引用,而许多程序员不这样做。
-
你有没有"void matrix :: operator
-
错误是运行时错误。它把我带到了一个外部依赖文件,我不记得它的名字了。问题出在其他地方,这是一个非常小的程序。只需更改参数类型即可解决此问题。
-
你很可能想要
const。
标签: c++ oop operator-overloading runtime-error insertion