【发布时间】:2026-01-05 16:40:02
【问题描述】:
我很想为 c++ 创建类似 javascript 的 setTimeout 和 setInterval 功能(无需增强)。我想要实现的目标:一个基类,可以在重复或单次延迟后调用其子类成员变量。
我已经有一个update 函数和超时功能。我还找到了如何将成员函数指针传递给基类并使用以下方法触发该函数:
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 *obj 和void (object::*func)() 存储在向量(或其他容器)中。我只是想出模板...
如何将triggerNow 的两个模板化参数存储在一个向量中?一旦我弄清楚这一点,我就可以创建我的 setTimeout 和 setInterval!
【问题讨论】:
-
你可以声明一个
std::vector<void (object::*)()> theVector实例变量,然后看看Foundation的legendaryNSTimerclass是怎么做的(虽然那是Objective-C,C部分会匹配:) -
@Ross:你的计时器要求有多难?您是否希望在此期间能够做其他事情? (即,多线程在发挥作用......)
-
时间/定时器要求不是问题。