Programowanie Obiektowe Podstawy

0

Potrzebuje pomocy z zadaniem które dostałem na Podstawach Programowania Obiektowego.
Polecenie
Dokończyć (niczego nie zmieniając, jedynie dopisując) deklarację klas
CContainer, CStack i CLimitedStack tak, żeby poprawnie działały w podanej funkcji main.

Pomożecie?

main


#include <string.h>
#include <iostream>

using namespace std;

#include "stack.h"

size_t CLimitedStack::SizeLimit = 40;

int main()
{
    CContainer* pStack = new CLimitedStack();

    if(pStack->getSizeLimit() != 40)
    {
        cerr << "Result 1 is wrong" << endl;
        return -1;
    }

    // Do tego miejsca: na 60%
    #if defined(FOR_80) || defined(FOR_100)

    for(int i=0; i<6; ++i)
        pStack->push(i);

    for(int i=0; i<6; ++i)
    {
        int a = pStack->pop();
        cout << a << ' ';

        if(a != 5-i)
        {
            cerr << "Result " << 2+i << " is wrong" << endl;
            return -1;
        }
    }
    cout << endl;                                                       // Prints "5 4 3 2 1 0 "

    // Do tego miejsca: na 80%
    #if defined(FOR_100)

    const size_t NewSizeLimit = 4;
    CLimitedStack::setSizeLimit(NewSizeLimit);

    for(int i=0; ; ++i)
        if(!pStack->push(i))
            break;

    for(unsigned i=0; i<NewSizeLimit; ++i)
    {
        int a = pStack->pop();
        cout << a << ' ';

        if((unsigned)a != NewSizeLimit-i-1)
        {
            cerr << "Result " << 8+i << " is wrong" << endl;
            return -1;
        }
    }
    cout << endl;                                                       // Prints "3 2 1 0"

    // Do tego miejsca: na 100%
    #endif /*defined(FOR_100)*/
    #endif /*defined(FOR_80) || defined(FOR_100)*/

    delete pStack;

    return 0;
}

stack.h

#include <vector>

using namespace std;

class EmptyContainer {};

class CContainer
{
protected:
    vector<int> Data;

public:
    virtual bool push(int) = 0;
    virtual int pop() = 0;

    virtual size_t getSizeLimit() = 0;
};

class CStack
{
};

class CLimitedStack
{
    
private:
    static size_t SizeLimit;

public:
    CLimitedStack()
    {
        
        
    }
};


2

Musisz zaimplementować na wskaźnikach strukturę typu stos.
Dodatkowo Twoje klasy muszą dziedziczyć po sobie. Dzięki słowie virtual, program będzie wiedział, z której klasy wywołać metodę push/pop.

1 użytkowników online, w tym zalogowanych: 0, gości: 1