我有一个类,我想公开一个结构体列表(它只包含一些整数)。 我不希望外界修改这些数据,只是遍历并阅读他们 例子:让我的C++类通过BOOST_FOREACH迭代
struct TestData
{
int x;
int y;
// other data as well
}
class IterableTest
{
public:
// expose TestData here
};
现在在我的代码,我想用我的阶级是这样的:
IterableTest test;
BOOST_FOREACH(const TestData& data, test.data())
{
// do something with data
}
我已经阅读了关于成员空间的这篇文章http://accu.org/index.php/journals/1527。 但是,我不想(或不能)将所有TestData保存在内部向量中或其他东西。 这是因为类本身并不拥有存储空间,即实际上没有可以被类直接访问的底层容器。不过,该类本身可以查询外部组件以获取下一个,前一个或第i个元素。
所以基本上我希望我的班表现得好像它有一个集合,但事实上它没有一个集合。 任何想法?
你不需要提供返回合适迭代器的begin/end函数吗? – jalf 2009-10-20 22:34:42
是的,但我没有一个底层容器可以提供给我这些迭代器 – newgre 2009-10-20 22:37:01
所以你自己写。 :) Boost.Iterator库应该让你启动并运行相当快。 – jalf 2009-10-20 22:37:56