Błąd podczas kopiowania obiektu do tablicy obiektów.

0

Witam,
Program ma za zadanie przechowywac informacje o paczkach niestety mam problem z kopiowaniem obiektu do dynamicznej tablicy obiektów. Program kompiluje się ale po chwili się crashuje. Prawdopodobnie problem jest powiązany z 25 linijka pliku Poczta.cpp. Z góry dziękuje za wskazówki.
Plik main

#include <iostream>
#include "Paczka.h"
#include "Poczta.h"
using namespace std;

int main()
{

    Paczka przesylka("warszawa");
    przesylka.show();
    Poczta warszawa;

    warszawa.dodajpaczke(przesylka);
    warszawa.pokaz();
    return 0;
}
 

plik Paczka.h

 #ifndef PACZKA_H_INCLUDED
#define PACZKA_H_INCLUDED
#include <string>
#include <iostream>
using namespace std;
class Paczka{
private:
    string adres_;
public:
    Paczka();
    Paczka(string adres);
    void show();
    ~Paczka();
};


#endif // PACZKA_H_INCLUDED

plik Paczka.cpp

#include <iostream>
#include "Paczka.h"
#include <string>
using namespace std;
Paczka::Paczka()
{
    adres_="Adres domyslny";
}
Paczka::~Paczka()
{


}
Paczka::Paczka(string adres)
{
    adres_=adres;
}
void Paczka::show()
{
    cout<<adres_<<endl;
}
 

plik Poczta.h

 #ifndef POCZTA_H_INCLUDED
#define POCZTA_H_INCLUDED
#include "Paczka.h"
class Poczta{
private:
    int liczbapaczek;
    int ilepaczekprzeniesc;
    Paczka *paczki;
public:
    Poczta();
    ~Poczta();
    void dodajpaczke(Paczka &zastepcza);
    void pokaz();
};


#endif // POCZTA_H_INCLUDED

plik Poczta.cpp

 #include <iostream>
#include "Paczka.h"
#include "Poczta.h"
#include <string>
using namespace std;
Poczta::Poczta()
{
    liczbapaczek=1;
    paczki=new Paczka[liczbapaczek];
}
Poczta::~Poczta()
{
    delete[] paczki;
}
void Poczta::dodajpaczke(Paczka &zastepcza)
{

    int nowaliczbapaczek=liczbapaczek+1;
    Paczka *paczki_tymczasowa;
    paczki_tymczasowa=new Paczka[nowaliczbapaczek];

    for(int i=0;i<liczbapaczek;i++)
    paczki_tymczasowa[i]=paczki[i];

    paczki_tymczasowa[nowaliczbapaczek]=zastepcza; <-- tutaj może być problem
    delete[] paczki;
    paczki=paczki_tymczasowa;
    liczbapaczek=liczbapaczek+1;
}
void Poczta::pokaz()
{
    cout<<endl;
    for(int i=0;i<liczbapaczek;i++)
        paczki[i].show();

}
2

Nie używaj using namespace std; w globalnej przestrzeni nazw w plikach nagłówkowych.

paczki_tymczasowa[nowaliczbapaczek]=zastepcza; <-- tutaj może być problem 

No raczej, że jest tu problem. Ile masz elementów w "tablicy" paczki_tymczasowa? Do którego się odnosisz w tej linijce? Bo jak dla mnie, to wygląda jakbyś wyjechał o jeden za daleko.

Szczerze mówiąc, użyłbym tu po prostu std::vector i miał w "tyle" ręczną alokację. :P

0

Tak, masz nowaliczbapaczek elementów. Czyli paczki_tymczasowa[nowaliczbapaczek] to który element?

0

Dobrze, wszystko rozumiem :D Bardzo dziękuje za poświęcony czas nad tak banalnym błędem :/

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