gpt4 book ai didi

c++ - 在 C++ 中将带或不带参数的函数作为参数传递

转载 作者:行者123 更新时间:2023-11-28 02:35:06 26 4
gpt4 key购买 nike

我想将不带参数的 void 函数或带参数的 void 函数作为参数传递给构造函数。像这样:

DailyActivity activity1(&function1)

DailyActivity activity2(&function2(uint_t 1))

传递的函数应该在 DailyActivity::run() 被调用时被触发。

DailyActivity 的 header 如下所示:

class DailyActivity {
typedef void (*function_type)();

public:
DailyActivity(void (*f)());
virtual void run();

private:
function_type m_function;
};

构造函数和 run() 函数如下所示:

DailyActivity::DailyActivity(void (*f)()) : m_function((*f)) {
}

DailyActivity::run() {
m_function();
}

但我没有设法 (1) 以正确的方式定义 typedef 以允许接受两个不同的函数和 (2) 成功传递参数 o function2。

最佳答案

你不能那样做。不幸的是,C++ 不能处理部分函数,​​所以你必须重载你的构造函数,将函数和参数作为两个单独的参数,第二个参数处理无参数参数。然后你将有两个函数指针,其中一个应该为空。

另一种选择是将函数包装到 lambda 中。

关于c++ - 在 C++ 中将带或不带参数的函数作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27771050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com