You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GTest测试CHomaMessage类重载比较运算符未生效问题咨询

问题诊断与修复方案

核心结论

GTest完全支持测试重载运算符,你遇到的问题全部由代码编写错误导致。

具体错误点与修复方法

  • 测试用例的指针比较错误
    你写的EXPECT_TRUE(&message2 == &message3);中&是取地址符,此处是在比较两个栈对象的内存地址,而非对象本身的内容。两个独立创建的栈对象地址必然不同,该断言一定会失败,且完全不会调用你重载的==运算符。
    修复方式:去掉取地址符,直接比较对象本身即可触发重载的运算符:
    EXPECT_TRUE(message2 == message3);
    
  • 类定义语法错误
    你贴出的CHomaMessage类定义末尾缺少C++类要求的结尾分号,会直接导致编译报错,需要补全。
  • 构造函数缺失问题
    你测试时调用了4参数的构造函数CHomaMessage(3, 0, 4, 1024),但你贴出的类定义中没有声明对应的构造函数,你需要确保头文件中已经正确声明并实现了该构造函数,且完成了id、size两个const成员的初始化,否则也会出现编译错误。
  • 你第二个测试断言EXPECT_FALSE(message2 < message3);的逻辑是正确的:你给两个对象传入的size均为4、prevIndex均为0,remainingSize()返回值相同,因此message2 < message3的结果确实是false,符合你的预期。

内容的提问来源于stack exchange,提问作者Alberto Merino Risueño

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 22:15:02