gpt4 book ai didi

c++ - 接受任何函数(但仅限于函数)作为参数

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:43:49 24 4
gpt4 key购买 nike

有没有办法接受任何函数签名作为参数?例如:

void accepter(void (*func)(int)) {  ... }

将接受任何类型的void (*)(int)。我知道我可以使用模板,例如:

template<class T>
void accepter(T func) { ... }

这会起作用,但随后它允许传入非函数。如何像 void * 过滤任何类型的指针一样只过滤函数?

最佳答案

使用 C++11 的 std::function 应该可行:

#include <functional>

template<typename T>
void test (std::function<T> func) {

您可以使用它,例如:

int foo (int);
std::sting bar (bool);

test(std::function<int(int)>(foo));
test(std::function<std::string(bool)>(bar));

关于c++ - 接受任何函数(但仅限于函数)作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24535311/

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