/*********************************************************************
safearray.h
    redo of Practice Test for Practical 8
*********************************************************************/
#include <iostream>
using namespace std;
#include <process.h> //for the exit() function

class soldier {
    public:
        string rank;
        string first;
        string last;
};

//class definition
class safearray {
    public:
        enum { maxsize = 100 }; //replaces const int maxsize = 100;

    private:
        soldier array[maxsize];
        int used;

    public:
        safearray() {
            used = 0;
        }

        const int& count() const {
            return used;
        }
        
        soldier& operator[](const int& pos) {
            if ((pos < 0) || (pos >= maxsize)) {
                cerr << endl << "Index out of bounds" << endl;
                exit(1);
            }
            else if (used < pos+1)
                used = pos+1;

            return array[pos];
        }

        const soldier& operator[](const int& pos) const {
            if ((pos < 0) || (pos >= maxsize) || (pos+1 > used)) {
                cerr << endl << "Index out of bounds" << endl;
                exit(1);
            }
            return array[pos];
        }

};