我是想曝光
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/