c++ - 类似于 c++ 的 setTimeout 功能

标签 c++ class timeout

我很想为 c++ 创建类似 javascript 的 setTimeoutsetInterval 的功能(没有提升)。我想要实现的目标:一个基类,它可以在重复或一次延迟后调用其子类成员变量。

我已经有了一个更新函数和时间流逝的函数。我还找到了如何将成员函数指针传递给基类并使用以下方法触发该函数:

class BaseClass {
public:
     template <class object>
     void triggerNow(object *obj, void (object::*func)()) {
          ((obj)->*(func))();
     }

} 

class SubClass : public BaseClass {
public:
    void update() {
         triggerNow(this, &SubClass::worked)
    }
    void worked() {
         cout << "worked!";
    }
}

我目前面临的问题是如何将object *objvoid (object::*func)() 存储在 vector (或其他容器)中。我只是想弄清楚模板...

如何将 triggerNow 的两个模板化参数存储在 vector 中?一旦我弄明白了这一点,我就可以创建我的 setTimeout 和 setInterval!

最佳答案

还没有对计时功能发表评论。

但是,由于您使用的是父类和基类,我建议使用多态性,而不是模板成员函数。

class BaseClass {
    public:
        virtual void triggerMe() = 0;

 };

class SubClass1 : public BaseClass {
    public:
        virtual void triggerMe()
        {
            //real code, do something
        }

 };

class SubClass2 : public BaseClass {
    public:
        virtual void triggerMe()
        {
            //real code, do something else
        }

 };

然后你就可以得到一个vector指针指向BaseClass:

vector<BaseClass*> objects;

objects.push_back(new SubClass1);
objects.push_back(new SubClass2);

for (auto it = objects.begin(); it != objects.end(); it++)
{
    it->triggerMe();
}

关于c++ - 类似于 c++ 的 setTimeout 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875706/

相关文章:

excel - 为 Excel VBA 创建常量库的理想方法是什么?

automation - 咖啡厅 : Page timeout after submit

c++ - 学习完毕,有什么建议吗?

css - 将 CSS 类用于个别效果 - 意见?

c++ - C++ 编译器(或链接器?)如何知道如何处理 cpp 和头文件?

PHP:当循环很长的函数没有响应时退出并显示警报

perl - 如何在 Perl 中使用超时读取实现 'tail -f'?

c++ - 使用 C++ 打印 HTML 标记

c++ - 计算矩阵中对角线的总和

c++ - boost 库中的超图支持