gpt4 book ai didi

c++ - 将对象传递给重载运算符

转载 作者:可可西里 更新时间:2023-11-01 18:33:27 26 4
gpt4 key购买 nike

昨天有人给了我一个有错误的程序。在 MVS 2010 中工作时,我发现了问题及其替代方案。问题是类的重载插入运算符。它的原型(prototype)如下……

void matrix :: operator << (matrix&) ;

它是从这样的地方调用的......

matrix m ;
m.operator << (m) ;

我发现编译器不允许发送相同的对象作为调用函数的引用参数。但我不明白这背后的原因,也不知道它会产生什么问题。如果有人能解释一下,我将不胜感激。谢谢。

编辑:实际发生的事情是,在调试时,它进入函数内部,出来并在 main 执行时进入外部依赖文件 dbgdel.cpp 并在此停止行。

 _ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));

最佳答案

给定的代码在 VS2010 SP1 中编译和运行得很好.

显示的代码也没有问题,它是完全合法的。声明一个运算符重载然后用运算符 << 调用它有点奇怪, 你可以很容易地写出 m << m .

一些猜测:

  • 您正在使用 m 的地址运算符实现中的某处并意外删除了它
  • 您正在超出可能存储在运算符实现内部矩阵中的值数组的边界。
  • 调用代码和被调用代码之间的编译器和链接器假设不匹配。检查您的调用约定、双方运行时库的版本以及任何其他设置,例如 SECURE_SCL 和 interator 调试。

关于c++ - 将对象传递给重载运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12390850/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com