c++ - C++ 类函数能否判断自上次调用以来类成员对外部类的引用是否已更新?

标签 c++ c++11

假设我有两个类:

A 类:

class A
{
    private:
        int _i; 
    public:
        A(int i){_i=i;}
        void update(int t){_i=t;}
        friend class B;
};

B 类:

class B
{
    private:
        A &_a;
    public:
        void respond();
        B(A &); 
};

B::B(A & a)
:_a(a)
{}

void
B::respond()
{
    /*  
    if (a._i has been updated after last call of B::respond)
    {
        do something
    }
    else
    {
        do nothing
    }
    */
}

有没有办法在 C++/C++11 中实现 B::respond() 中描述的任务? _i被指针替换,B::respond()需要响应指针的内容怎么办?

请注意,我无法修改类 A

最佳答案

有两种方法可以实现:

  1. B::respond() 函数中保存 a._i 的值,并在下一个 B::respond() 中与该值进行比较 调用。
  2. 在调用A::update 时设置一些内部标志。调用 B::respond() 时,检查该标志并将其取消设置。

关于c++ - C++ 类函数能否判断自上次调用以来类成员对外部类的引用是否已更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31349130/

相关文章:

c++ - CUDA 在内核中对在主机上创建的对象调用虚拟方法

c++ - 为什么 std::make_move_iterator 适用于 vector<string> 但不适用于 vector<int>

c++ - "array"是 c++11 标准下的关键字吗?

c++ - 预期类型说明符

c++ - Doxygen:没有为非成员函数生成超链接

c++ - 公钥完整性 - 中间人攻击

c++ - 嵌套类的原始指针类成员无法返回分配的指向对象的数据

c++ - 如何正确捆绑 libstdc++.so.*?

c++ - 在类外定义的类 typedef

c++ - 如何使用 QProgressBar