为何修改类私有指针指向的变量需临时变量?能否简化实现?
问题解决:无需临时变量修改外部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
相关产品推荐
相关产品推荐

