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

C++重载<<输出运算符未按预期工作,输出指针地址而非类成员内容

问题原因

你重载的<<运算符形参为const Actor&引用类型,但你传入的player2是Actor*指针类型,C++没有匹配Actor*的自定义输出重载,所以会触发默认的指针输出逻辑,直接打印内存地址。

解决方法

  • 输出时对指针做解引用操作即可调用你写的重载函数,代码修改为:
std::cout << *player2;

如果需要考虑指针为空的场景,可以先加非空判断避免崩溃:

if (player2 != nullptr) {
    std::cout << *player2;
}

额外代码问题提示

现有代码里还有两处容易出问题的地方:

  1. Heal成员函数的实现写的是health=+amount,等效于直接把health赋值为amount,不是预期的累加血量,应该修改为health += amount
  2. 重载<<的输出逻辑里两个字段之间没有分隔符,会出现DAMAGE DONE: 10HEALTH: 100这类连在一起的内容,建议在中间添加空格、换行等分隔符提升可读性。

内容的提问来源于stack exchange,提问作者mak95

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:45:08