Keresés

Új hozzászólás Aktív témák

  • mgoogyi

    senior tag

    válasz papa019 #686 üzenetére

    #include "fifo.h"
    #include<stdio.h>

    FiFo::FiFo()
    {
    elementNum=0;
    pData=0;
    }

    FiFo::FiFo(const FiFo&theOther)
    {
    if(theOther.elementNum==0)
    {
    elementNum=0;
    pData=0;
    }
    else
    {
    elementNum=theOther.elementNum;
    pData=new double[elementNum];
    for(int i=0;i<elementNum;i++)
    {
    pData=theOther.pData(i);
    }
    }
    }

    FiFo::~FiFo()
    {
    if (pData) {
    delete [] pData;
    pData = 0;
    }
    }

    double FiFo::get()
    {
    if (elementNum==0) {
    return 0;
    }

    if(elementNum==1)
    {
    double element=pData[0];
    if (pData) {
    delete [] pData;
    pData = 0;
    }
    elementNum=0;
    return element;
    }
    elementNum--;
    double element=pData[0];
    double*pTemp=new double[elementNum];
    for(int i=0;i<elementNum;i++)
    {
    pTemp(i)=pData[i+1];
    }
    if (pData) {
    delete [] pData;
    pData = 0;
    }
    pData=pTemp;
    return element;
    }

    bool FiFo::put(double element)
    {
    double*pTemp=new double[elementNum+1];
    elementNum++;
    for(int i=0;i<elementNum-1;i++)
    {
    pTemp(i)=pData(i);
    }
    pTemp[elementNum-1]=element;
    if (pData) {
    delete [] pData;
    pData = 0;
    }
    pData=pTemp;
    return true;
    }

    bool FiFo::empty()
    {
    elementNum=0;
    if (pData) {
    delete [] pData;
    pData = 0;
    }
    return true;
    }

    Alapból a destruktorban szállt el, hiszen a get()-nél mikor kivetted az utolsó elemet, már felszabadítottad a pData-t, a destruktor pedig még1x megpróbálta ezt megtenni.

Új hozzászólás Aktív témák