【发布时间】:2016-12-21 17:05:44
【问题描述】:
我有一个对象,它具有获取开始和结束迭代器的功能:
const_iterator err_begin() const
const_iterator err_end() const
因为它们没有被命名为 begin 和 end,所以我无法将我的对象直接传递给 range-v3 中的函数。
是否有一个简单的包装器可以让这个对象与 range-v3 库一起使用?
例如:
auto hasErrors = !empty(something(x.err_begin(), x.err_end()));
【问题讨论】:
-
添加
begin()和end()分别调用这两个函数? -
对象是库的一部分。我无法更改方法名称或添加新方法。
-
创建您正在谈论的简单包装器,将开始和结束调用映射到您想要的调用。
-
为您的对象添加重载到
begin和end函数。它们不需要是方法 -
class_name::const_iterator begin(class_name& obj) { return obj.err_begin(); }