1

假设一个类

class Foo
    {
    private:
        ANonTrivialContainer bar;
        OtherData baz;
    };

ANonTrivialContainer 的迭代器是双向的。从外部,我想对 bar 的内容做一些事情。什么是可取的

  • 提供 beginBar() 和相应的 endBar(),返回 ANonTrivialContainer 的迭代器,如 Allowing access to container objects in C++的公认答案。这将起作用,但会向调用者公开内部细节(因为它需要对底层类进行显式调用)。
  • 提供将所有调用转发到内部迭代器的自定义迭代器。beginBar 和 endBar 现在返回自定义迭代器。
  • 提供一个获取回调类对象引用的 forEach 方法
4

1 回答 1

1

我将提供一个visitBars通用方法,以仿函数作为参数。

template<typename F> void visitBars(F visit) {
  for(auto b: bar)
    visit(b);
}
于 2013-06-19T09:44:51.267 回答