当我的结构中的任何变量发生更改时触发的事件的任何方法

Any way to do event that fire when any variable in my structure is changed?

本文关键字:任何 事件 方法 结构 我的 变量      更新时间:2023-10-16

>我有一个简单的结构,但我不知道进行一个事件/函数调用,当这个结构中的任何变量被改变时触发。在 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;
}
相关文章: