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

C++ obiektowy niby proste

Cloud VPS
0 głosów
286 wizyt
pytanie zadane 10 października 2016 w C i C++ przez maxwawa Nowicjusz (120 p.)

Witam wszystkich,

Mam niby prosty przykład a jednak nie do końca rozumiem dlaczego nie ma prawidłowo wyświetlanych argumentów ( nazwa int int) wywołanych po powrocie do main np. w liniach od 35 do 37 oraz  wewnątrz metody wyświetl klasy Punkt ? jedynie konstruktor prawidłowo ustawia te argumenty a później nagle nie można ich prawidłowo wywołać.

korzystam z CodeBlocksa

najlepiej wykonać kopiuj wklej z poniższego projektu

#include <iostream>
using namespace std;

class Punkt
{

public:

   int x,y;
   string nazwa;

public:

Punkt (int a, int b,string n)
{
    cout << "KONSTRUKTOR" << endl;
    cout<<n<<" ( "<<a<<" oraz  "<<b<<")"<<endl;
}

   void wyswietl()
   {
      cout<< "wewnatrz metody wyswietl" << nazwa<<"("<<x<<","<<y<<")"<<endl;
   }

};



int main()
{
    Punkt p1 (2, 111, "obiekt klasy" );
    Punkt p2 (77,88,"Punkt 2");
    Punkt p3 (4, 98, "obiekt klasy nr 3" );

    cout << endl<<"powrot do MAIN argumenty obiektu to: " << p1.nazwa << "   "<<  p1.x <<"   "<<  p1.y << endl;
    cout<< "powrot do MAIN argumenty obiektu to: " << p2.nazwa<< endl;
    cout<< "powrot do MAIN argumenty obiektu to: " << p3.nazwa<< endl;

    p1.wyswietl();
    p2.wyswietl();
    p3.wyswietl();

    return 0;
}

 

 

 

2 odpowiedzi

+2 głosów
odpowiedź 10 października 2016 przez Blacha Mądrala (5,960 p.)
Nie przypisujesz zmiennym nazwa, x i y wartosci. Jeszcze dodam ze nie potrzrbnie masz dwa razy public:.
komentarz 10 października 2016 przez maxwawa Nowicjusz (120 p.)
Dziękuję za odpowiedź

wartości x , y i nazwa przypisuję konstruktor i wewnątrz konstruktora jest wszystko ok poza nim wartości argumentów znikają i próba odczytania w main np wartości obiektu  p1.x to jest jakaś zmienna przypadkowa
1
komentarz 10 października 2016 przez criss Mędrzec (172,570 p.)
Twój konstruktor niczego do czegokolwiek nie przypisuje. Wyświetlasz argumenty przekazane do konstruktora. Zmienne należące do obiektu pozostają nieruszone.
1
komentarz 10 października 2016 przez Blacha Mądrala (5,960 p.)
edycja 10 października 2016 przez Blacha

Podaj dokładnie w której linijce gdyż zapewniam cię że nie przypisujesz żadnych wartości.

 

ps. jakbyś zastanawiał się z czego te "losowe" liczby. Gdy deklarujesz zmienną bez dania jej wartości np:

int liczba;

to zawiera ona w sobie dane z wcześniejszego, nieistniejącego już procesu.

+1 głos
odpowiedź 10 października 2016 przez Rivelon Użytkownik (700 p.)
Konstruktor sam się nie domyśli, że x to a, y to b. Musisz mu taką informację przekazać.
1
komentarz 10 października 2016 przez maxwawa Nowicjusz (120 p.)
Dziękuję, faktycznie jest tak jak opisujecie ale z tego wykładu

https://www.youtube.com/watch?v=oNgs9LeiIqw

nie wynikało to jednoznacznie.

poprawiłem kod w konstruktorze i wszystko teraz działa jak należy.

 

pozdrawiam

 

Jednak jak już się siedzi zbyt dużo godzin przy kodzie to lepiej sobie zrobić przerwę np. na spacer ;) bo nie "widać" oczywistych rzeczy.

Podobne pytania

0 głosów
1 odpowiedź 226 wizyt
pytanie zadane 21 stycznia 2020 w C i C++ przez manjaro Nałogowiec (37,390 p.)
0 głosów
2 odpowiedzi 293 wizyt
0 głosów
1 odpowiedź 307 wizyt

93,469 zapytań

142,404 odpowiedzi

322,716 komentarzy

62,852 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

Kursy INF.02 i INF.03
...