Resources‎ > ‎Programming‎ > ‎C++‎ > ‎C++ Tutorial‎ > ‎Lesson 8‎ > ‎

Sample Solutions

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;
}

Comments