如何复制函数回调?

我有一个Timer类,该类在超时时调用函数指针。这个Times应该能够被复制的问题(实例可以在数组中交换)。复制后,m_callbackOwner无效。

那么,该如何处理呢?如何实现回调以允许复制?

#pragma once

#include "common/Function.h"
#include "helpers/Utils.h"

template<typename TimeoutCallbackOwner,typename TimeoutCallback>
class Timer
{
public:
    Timer() : m_interval(0),m_value(0),m_callbackFunction(nullptr) {}

    void setCallback(TimeoutCallbackOwner *cbOwner,TimeoutCallback cb)
    {
        assert(cbOwner && cb);
        m_callbackOwner = cbOwner;
        m_callbackFunction = cb;
    }

    void update(double dt)
    {
        if (m_interval < 0 || isEqual(m_interval,0))
        {
            return;
        }

        m_value += dt;

        if (m_value >= m_interval)
        {
            m_value = 0;

            if (m_callbackOwner,m_callbackFunction)
                CALL_MEMber_FN(m_callbackOwner,m_callbackFunction);
        }
    }

    void setInterval(double interval)
    {
        m_interval = interval;
        m_value = 0;
    }

    double interval() const
    {
        return m_interval;
    }

    double value() const
    {
        return m_value;
    }

    bool isRunning() const
    {
        return m_value != 0;
    }

private:
    double m_interval;
    double m_value;

    TimeoutCallbackOwner * m_callbackOwner;
    TimeoutCallback m_callbackFunction;

};
wenjin666666 回答:如何复制函数回调?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3048815.html

大家都在问