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

为何修改类私有指针指向的变量需临时变量?能否简化实现?

问题解决:无需临时变量修改外部bool变量

你的核心问题是对指针操作的理解偏差:this->myFlag = false这行代码是给指针变量myFlag本身赋值(把它转换成空指针),根本没触及它指向的外部bool变量。

要直接修改外部变量,只需要对指针成员做解引用操作,一行代码就能搞定:

*this->myFlag = false;

修改后的EventHandler.cpp完整代码:

#include "EventHandler.h"
#include <iostream>

EventHandler::EventHandler(bool *myFlag)
{
    this->myFlag= myFlag;
}

void EventHandler::update()
{
    *this->myFlag = false; // 直接解引用指针修改目标变量

    std::cout << *this->myFlag << std::endl;
};

运行后main函数里的myFlag会从true被正确修改为false,输出结果为:

1
0
0

原理很直观:this->myFlag是指向外部bool变量的指针,*this->myFlag就是对该指针的解引用,直接访问它指向的内存空间,赋值操作自然会修改外部变量的值,完全不需要临时指针变量中转。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:41:10