ユーザーがファイルからデコードされたオブジェクトを反復処理できるようにする C++ インターフェイスを設計しています。このデコード処理はやや遅いです。
これにはイテレータインターフェースを考えているのですが、不要なコピーは避けたいので(ユーザー側)以下を考えています。
for (const auto& object : file) {
// you can access the members of `object` here
std::cout << object.whatever() << std::endl;
// you can copy `object` here
myObjectCopy = object;
// you CANNOT do this because `object` changes
// as soon as the iterator advances
myObjectPtr = &object;
}
object
前の使用例の は、反復子インスタンスの内部にあるオブジェクトへの参照です。
これは間違っていますか?ここで他にどの慣用的なインターフェースを提案しますか?
ストリーム インターフェイスについて考えましたが (考えてみてstd::istream
ください)、データを読み取るメソッドもコピーを返します (文字を抽出します)。