を所有し、、、、およびメソッドを提供する必要があるクラスがありstd::vector
ます。実装の詳細を公開したくない、つまり を使用したくないので、独自の Iterator が必要です。私が理解したように、これが目的です: iterator を取り、それを新しい Iterator タイプ内にラップします -> myは thenになります。begin()
end()
cbegin()
cend()
std::vector
boost::iterator_adapter
std::vector<T>::iterator
MyClass::iterator
まず、boost::iterator_adapter についての私の理解は正しいusing const_iterator = const iterator
ですか?
class MyClass {
public:
iterator begin();
// ...
private:
using container_t = std::vector;
container_t<int> container;
}
class MyClass::iterator
: public boost::iterator_adaptor<
MyClass::iterator // Derived
, container_t<int>::iterator // Base
, boost::use_default // Value
, boost::random_access_traversal_tag > // CategoryOrTraversal
{
public:
iterator()
: iterator::iterator_adaptor_() {}
explicit iterator(const iterator::iterator_adaptor_::base_type& p)
: iterator::iterator_adaptor_(p) {}
private:
friend class boost::iterator_core_access;
};
これはコンパイルできない可能性があります。