【发布时间】:2021-08-10 08:54:07
【问题描述】:
我想创建一个类似 setInterval(func, delay, [arg1, arg2, ...]); 的 JavaScript 函数。
void func(int t) {
std::cout<<t<<std::endl;
}
void func(int i, char* t) {
std::cout<<t<<std::endl;
}
class Timer {
public:
void setInterval(auto function, int interval, ...args);
};
void Timer::setInterval(auto function, int interval, ...args) {
while(1) {
function(args);
msleep(interval);
}
}
int main() {
Timer *t1 = new Timer;
t1->setInterval(func, 1000, 2021);
Timer *t2 = new Timer;
t2->setInterval(func, 1000, 2, "hello");
while (1) {
}
return 0;
}
但我不知道如何将可变参数转换为类成员函数。谁能帮我?谢谢。
【问题讨论】:
-
你知道如何为非成员函数做吗?如果是,问题究竟出在哪里?显示的代码中没有尝试正确使用可变参数
-
另一个问题是
func是一个重载的函数,所以你不能把它的地址换成auto。 -
你可以使用'stdarg'。 stackoverflow.com/a/1579732/8875520
-
while (1) {}是 UB。
标签: c++