gpt4 book ai didi

c++ - 按值传递 std::function

转载 作者:可可西里 更新时间:2023-11-01 11:20:32 26 4
gpt4 key购买 nike

我是想曝光

typedef std::function<bool (int)> Filter;

这是

的一部分
#include <functional>

这样用户就可以创建过滤器并将其传递到我的组件中进行处理。该要求要求处理不能在模板函数中完成。

我知道在接口(interface)上使用 STL 不是一个好的做法,因为 Filter 类型的大小取决于 STL 实现。除了原始函数指针由模板函数接收的仿函数,我还有哪些替代选择。

最佳答案

大小在这里不是很重要,但如果使用您的库的某个人使用不同的 STL 实现,那么您的代码将无法使用,那么另一种选择是什么?我将为此使用一个接口(interface)(纯虚拟类):

struct MyCallback {
virtual bool filter( int ) = 0;
};
class MyImplementation {
public:
...
void set_callbacks( MyCallback* );
};

使用这种架构,您可以让您的用户使用 C++ 的强大功能,同时您不依赖于 STL!

关于c++ - 按值传递 std::function<bool (int)>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12853327/

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