Uprościłem zadanie do minimum tj. napisałem nowy prosty kod, żeby było czysto i prosto z ewentualną pomocą:
Mam klasę która tworzy pojazd:
class Pojazd{
string nazwa;
public:
Pojazd(){
nazwa = "Domyslny";
}
Pojazd(string name){
nazwa = name;
}
void wypisz(){
cout << nazwa << endl;
}
};
Następnie mam klase sklep która ma pole typu Pojazd oraz pole ilość_ofert informujące o tym ile samochodów jest w tym obiekcie:
class Sklep{
int liczba_ofert = 0;
Pojazd *w = new Pojazd[liczba_ofert];
public:
void dodaj_do_oferty(Pojazd &a){
liczba_ofert++;
w[liczba_ofert-1] = a;
}
void wypisz_oferty(){
for (int i = 0; i < liczba_ofert; ++i) {
w[i].wypisz();
}
}
};
Oraz main który mi to wykonuje:
int main() {
Pojazd toyota("toyota");
Pojazd suzuki("suzuki");
Pojazd hundai("hundai");
Sklep skl;
skl.dodaj_do_oferty(toyota);
skl.dodaj_do_oferty(suzuki);
skl.wypisz_oferty();
return 0;
}
No i mi to nie działa.... nie wiem dlaczego te dynamiczne alokowanie obiektu Pojazd *w = new Pojazd[liczba_ofert] gdy zwiększy się liczba ofert nie działa.... zrobiłem dokładnie taki sam przykład tylko że zamiast "Pojazd" jest int... i działa normalnie:
class Zbior{
int *dane;
int rozmiar = 0;
public:
Zbior(){
dane = new int[rozmiar];
}
void dodaj(int a){
dane[rozmiar] = a;
rozmiar++;
};
int main(){
Zbior x;
x.dodaj(1);
x.dodaj(2);
x.dodaj(6);
/// wszystko działa pięknie
}
Jak to zrobić? Ja chyba czegoś nie rozumiem tutaj ;/
Ogólnie zadanie to tej konkretnej klasy Sklep brzmi tak:
"Napisz klasę Pojazd która (..... XYZ ....)" Następnie:
"Napisz klasę Sklep, która zawiera prywatne pola:
• wskaźnik na dane (oferowane pojazdy),
• liczba oferowanych pojazdów.
oraz metody: 3
• wypiszOferte() - metoda wypisuje wszystkie oferowane samochody,
• dodajSamochod(Pojazd &a) - dodaje nowy samochod do oferty,
• przejmijKonkurencje(SalonSamochodowy&) - łączy zawartośc obu obiektow
Jak już zrozumiem jak to działa to z łączeniem nie będzie problemów ale nie mam pojęcia dlaczego dostaję Segmentation Error.... jak przy dokładnie takim samym przykładzie z intem mi działa ;/
Z tego co rozumiem to to musi być dynamiczne... dlatego mamy "liczbę oferowanych pojazdów" która będzie odpowiadać za wielkość tablicy którą jest zmienna Pojazd *dane....
Taki trick -> jak wpisze na starcie do zmiennej "liczba_ofert" jakaś większą liczbę ofert to normalnie będzie działać.... kurde co tam się dzieje? :(