• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konstruktor zwraca adresy

Object Storage Arubacloud
0 głosów
151 wizyt
pytanie zadane 30 października 2019 w C i C++ przez Mjkl Nowicjusz (170 p.)

Muszę powołać do życia kilka klas i zaimplementować zależności między nimi, meotdy, konstruktory. Potem utworzyć obiekty. Napisałem coś takiego:

class TV{
public:
    int cale;
    string rozdzielczosc;
    string proporcje;

    TV(int cale, string rozdzielczosc, string proporcje){
        this->cale=cale;
        this->rozdzielczosc=rozdzielczosc;
        this->proporcje=proporcje;
    }

    void wypiszParObrazu(){
        cout<<"Telewizor ma "<<cale<<" cali. Rozdzielczosc "<<rozdzielczosc<<" oraz proporcje "<<proporcje<<".\n";
    }
};

...

class pokoj{
public:
    TV *telewizor;
    szafa *szafka;
    kanapa *sofa;
};

...

class dom{
public:
    kuchnia *kuchnia1;
    pokoj *pokoj1;
    lazienka *lazienka1;
};

...

int main()
{
    dom *mieszkanie = new dom;
    mieszkanie->pokoj1->telewizor->wypiszParObrazu();
    delete mieszkanie;
    return 0;
}

Problem polega na tym, że wypisuje mi adresy. Próbowałem też przypisać parametry jawnie w konstruktorze. Gdzie popełniam błąd? Jak przypisać atrybuty obiektu z poziomu maina?

1 odpowiedź

0 głosów
odpowiedź 30 października 2019 przez Bondrusiek Maniak (61,370 p.)
wybrane 30 października 2019 przez Mjkl
 
Najlepsza

Musisz gdzieś użyć konstruktora TV z argumentami gdy chcesz wykonać metodą wypiszParObrazu. Dodatkowo musisz zarezerwować pamięć w konstruktorach a zwolnić ją w destruktorze. Tutaj przykład bez dealokacji pamięci



class TV{
public:
    int cale;
    string rozdzielczosc;
    string proporcje;

    TV(int cale, string rozdzielczosc, string proporcje){
        this->cale=cale;
        this->rozdzielczosc=rozdzielczosc;
        this->proporcje=proporcje;
    }

    void wypiszParObrazu(){
        cout<<"Telewizor ma "<<cale<<" cali. Rozdzielczosc "<<rozdzielczosc<<" oraz proporcje "<<proporcje<<".\n";
    }
};

class pokoj{
public:
    TV *telewizor;
    pokoj()
    {
        telewizor = new TV(32, "800x600", "4:3");
    }
};

class dom{
public:
    pokoj *pokoj1;
    dom(){
        pokoj1 = new pokoj();
    }
};

int main()
{
    dom* mieszkanie = new dom();
    mieszkanie->pokoj1->telewizor->wypiszParObrazu();
    return 0;
}

 

Podobne pytania

0 głosów
1 odpowiedź 355 wizyt
pytanie zadane 5 kwietnia 2021 w C i C++ przez Beginner555 Obywatel (1,760 p.)
0 głosów
2 odpowiedzi 182 wizyt
pytanie zadane 23 lipca 2020 w C i C++ przez RufinB Obywatel (1,830 p.)
–1 głos
1 odpowiedź 194 wizyt
pytanie zadane 6 października 2018 w C# przez konu33 Nowicjusz (210 p.)

92,584 zapytań

141,434 odpowiedzi

319,671 komentarzy

61,968 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...