構造体のリスト(いくつかの整数を含む)を公開したいクラスがあります。 私はちょうどそれを反復処理し、それらに 例を読んで、外にはこれらのデータを変更する必要はありません:BOOST_FOREACHを使用してC++クラスを反復可能にする
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 memberspacesについて。 しかし、すべてのTestDataを内部ベクトルなどに保存したくない(またはできない)ことはありません。 これは、クラス自体がストレージを所有していないためです。つまり、クラスによって直接アクセスできる基本のコンテナは実際には存在しません。クラス自体は外部コンポーネントにクエリして、次の要素、前の要素、またはi番目の要素を取得できます。
基本的に私のクラスにはコレクションがあるかのように動作しますが、実際にはクラスはコレクションを持たないようにします。 アイデア
適切なイテレータを返すbegin/end関数を用意する必要はありませんか? – jalf
はい、私はこれらのイテレータ – newgre
を私に提供することができる基になるコンテナを持っていないので、あなた自身でそれを書いてください。 :) Boost.Iteratorライブラリは、すぐに起動して、すばやく実行する必要があります。 – jalf