Separating Interface and Implementation


#define STACK_MAX 100

class Stack {

    private:
        int        data[STACK_MAX];
        int        size;

    public:
        Stack() { size = 0; }    // Constructor
        ~Stack() { }             // Destructor
        int Top();
        void Push(int d);
        void Pop();
};

int Stack::Top()
{
    if (size == 0) {
        fprintf(stderr, "Error: stack empty\n");
        return -1;
    }
    return data[size-1];
}

void Stack::Push(int d)
{
    if (size < STACK_MAX)
        data[size++] = d;
    else
        fprintf(stderr, "Error: stack full\n");
}

void Stack::Pop()
{
    if (size == 0)
        fprintf(stderr, "Error: stack empty\n");
    else
        size--;
}