当我的结构中的任何变量发生更改时触发的事件的任何方法
Any way to do event that fire when any variable in my structure is changed?
>我有一个简单的结构,但我不知道进行一个事件/函数调用,当这个结构中的任何变量被改变时触发。在 C# 中,我可以通过 get 和 set 轻松做到这一点,但是我如何在 C++ 上做同样的事情呢?
struct Player {
int x = 0;
int y = 0;
bool IsAlive;
float health;
};
当然我可以编写一些自定义类,但我仍然想要像这样的简单更改变量
Player MyPlayer;
MyPlayer.x = 100;
你能做的最好的事情就是代理和重载operator=
。 尽管简单明了的吸气剂和二传手可能会更好用。
#include <iostream>
using std::cout;
using std::endl;
class Something {
private:
template <typename Type>
class Proxy {
public:
Proxy(Type& in) : data{in} {}
Proxy& operator=(const Type& object) {
cout << "Changed data member" << endl;
this->data = object;
return *this;
}
const Type& operator*() {
return this->data;
}
private:
Type& data;
};
public:
Something(int in) : integer{in} {}
Proxy<int> integer;
};
int main() {
auto something = Something{1};
// trigger code to execute
something.integer = 2;
// getting the value will have a different syntax though
cout << *something.integer << endl;
return 0;
}
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- Android NDK传感器向事件队列报告奇怪的间隔
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 当我的结构中的任何变量发生更改时触发的事件的任何方法
- wxWigets 无法从 wxGridSizer 内部传递事件(或任何内容),如果有面板或 wxScrolledWind
- Qt. 忽略小部件中的任何鼠标事件,而不是另一个小部件
- 是否有任何可能的方法将事件(自定义)附加到在运行时创建的对象?[C 构建器]
- AMQP-CPP RABBITMQ HYNC事件的消费者不消耗任何东西
- 是否有任何对象可以用作FIFO和弹出数据的事件
- 将事件处理程序添加到任何控件都会导致 Visual Studio 中出错
- C++11观察者模式(信号、插槽、事件、更改广播器/侦听器,或任何您想称之为的东西)
- MFC-在dll卸载时,扫描我的代码,任何剩余的计时器,事件,线程等
- SetWinEventHook 不会捕获任何事件
- 事件类型设置为SDL_MOUSEBUTTONDOWN,即使在未按下任何按钮时也是如此
- 本机C++11事件-没有任何绑定的事件引发错误
- 是否存在用于单击组中任何按钮的事件
- 如何在任何事件发生之前唤醒epoll_wait()
- 我如何在没有点击或发送者或任何东西的情况下完成一个事件
- QThread在GUI事件上调用glBufferData()时不更新OpenGL vbo和不渲染任何东西