たとえば、次のクラスを 2 つに分割する必要があります。
class Range {
public:
Range(int end);
Range begin();
Range end();
// Second class would contain these methods.
bool operator!=(const Range& range);
int operator*();
void operator++();
};
// Print 012
// Almost as pretty as Python :D
for (int i : Range(3)) {
std::cout << i;
}
?
PS: 標準ライブラリにこのようなクラスはありますか?
アップデート:
代替設計は次のようになります。
class Range;
class RangeIterator {
public:
bool operator!=(const RangeIterator& range_iterator);
int operator*();
void operator++();
private:
RangeIterator(const Range& range);
};
class Range {
public:
Range(int end);
RangeIterator begin();
RangeIterator end();
friend class RangeIterator;
};