Practice 1
#include <iostream>
using namespace std;
class IntObject {
int value;
public:
IntObject() {};
IntObject(int v) : value(v){};
~IntObject() {};
void set(int v) {value = v;}
int get() {return value;}
};
class IntObjectArray {
int d_size;
IntObject *data;
public:
IntObjectArray(int size) : d_size(size) {
data = new IntObject[size];
for (int i = 0; i < size; ++i)
data[i].set(i);
}
~IntObjectArray() {
delete[] data;
}
IntObject * get(int index) {
return &data[index];
}
int size() { return d_size;};
};
class IntObjectIterator {
IntObjectArray *obj;
int d_current;
public:
IntObjectIterator(IntObjectArray *o): obj(o), d_current(0) {}
IntObject* begin() {
d_current = 0;
return obj->get(d_current);
}
IntObject* end() {
int size = obj->size();
if (size == 0)
return 0;
return obj->get(size);
}
IntObject* current() {
return obj->get(d_current);
}
IntObject* next() {
int size = obj->size();
if (d_current < size)
++d_current;
return obj->get(d_current);
}
IntObject* prev() {
if (d_current > 0)
--d_current;
return obj->get(d_current);
}
};
int main() {
IntObjectArray *array = new IntObjectArray(20);
IntObjectIterator it(array);
while (it.current() != it.end()) {
cout << "current value: " << it.current()->get() << endl;
it.next();
}
delete array;
return 0;
}
|
|