Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
// Luokka johon voidaan tuoda CElain-luokan perillisiä.
class CElainTarha
{
protected:
    CElain* Elaimet[100];   // 100 CElain-tyyppistä osoitinta taulukossa
    int ElainLaskuri;       // laskuri, joka kertoo monta Elainta on lisätty ylläolevaan taulukkoon.

public:
    CElainTarha() :
        ElainLaskuri(0)     // nollataan ElainLaskuri
    {
    }

    ~CElainTarha()
    {
        // Vapautetaan Elaimet-taulukon olioiden varaama muisti:
        for (int i=0; i<ElainLaskuri; i++) {
            delete Elaimet[i];
        }
    }

    bool LisaaElain(CElain* elain)
    {
        if (ElainLaskuri < 100) {
            Elaimet[ElainLaskuri] = elain;  // Lisätään parametrina saatu elain-olio Elaimet-taulukkoon
            ElainLaskuri++;
            return true;
        } else {
            return false;
        }
    }

    void SyotaElaimet() {
        for (int i=0; i<ElainLaskuri; i++) {
            Elaimet[i]->Syo();               // Kutsutaan kaikkien Elaimien Syo()-funktiota. Huom! '->' käytettään '.' sijaan silloin kun käsitellään osoittimia...
        }
    }
};
Code Block
int main()
{
    CElainTarha ElainTarha;

    ElainTarha.LisaaElain(new CKissa);
    ElainTarha.LisaaElain(new CKoira);
    ElainTarha.LisaaElain(new CKissa);
    ElainTarha.LisaaElain(new CKoira);
    ElainTarha.LisaaElain(new CKissa);

    ElainTarha.SyotaElaimet();
}

...