我有一個類,我想公開一個結構體列表(它只包含一些整數)。 我不希望外界修改這些數據,只是遍歷並閱讀他們 例子:讓我的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