我定义了三个简单的文件:
主.cpp
#include <iostream>
#include "EventHandler.h"
int main(int argc, char *argv[])
{
bool myFlag = true;
EventHandler eventHandler = EventHandler(&myFlag);
std::cout << myFlag << std::endl;
eventHandler.update();
std::cout << myFlag << std::endl;
}
EventHandler.h
#pragma once
class EventHandler
{
private:
bool *myFlag;
public:
EventHandler(bool *myFlag);
void update();
};
事件处理程序.cpp
#include "EventHandler.h"
#include <iostream>
EventHandler::EventHandler(bool *myFlag)
{
this->myFlag= myFlag;
}
void EventHandler::update()
{
this->myFlag = false;
// bool *tempVar = this->myFlag;
// *tempVar = false;
std::cout << *this->myFlag << std::endl;
};
我想做的是使用
myFlag
类中的 update
函数修改 EventHandler
的值。我设法通过替换来实现这一点:
this->myFlag = false;
与:
bool *tempVar = this->myFlag;
*tempVar = false;
但是这个解决方案对我来说似乎违反直觉,因此问题是(如果是的话那么如何)是否可以在不需要声明“临时变量”的情况下实现相同的结果,也许我敢只在一行中说?
赋值时,您不仅需要取消引用
this
,还需要取消引用 this->myFlag
。
void EventHandler::update()
{
*this->myFlag = false;
std::cout << *this->myFlag << std::endl;
};
但是你根本不需要
this
,明确地。没有本地 myFlag
变量可以消除歧义。
void EventHandler::update()
{
*myFlag = false;
std::cout << *this->myFlag << std::endl;
};