Problem z wypisaniem przez cout tego co trzeba

0

To jest tak śmiesznie banalne, że wrzucam to tutaj. Właściwie nie robiłbym tego, ale dzieje się w tym programie coś czego po prostu nie rozumiem.

Wpisuje wartość np 9 do Mruczek.SetAge(9); Dlaczego więc po uruchomieniu wypisany zostaje ciąg jakichś innych cyfer? Kod chyba napisałem po prawnie. Wcześniej nie miałem takich problemów, więc nie rozumiem o co chodzi.
[quote]
Dlaczego po wykonaniu programu na ekranie wypisane są liczby -94839439...jakieś tam, skoro powinno wypisać liczbę 9 ?

class Cat
{
public:
int GetAge();
void SetAge(int age);
void Miow();
private:
int itsAge;
};
int Cat::GetAge()
{
return itsAge;
}
void Cat::SetAge(int age)
{
int itsAge=age;
}
void Cat::Miow()
{
cout <<"Miauuuuuuuuuuuu"<<endl;
}
int main()
{
Cat Mruczek;
char znak=0;

Mruczek.SetAge(9);

cout <<"Mruczek jest kotem i ma: "<<endl;
cout <<Mruczek.GetAge()<<"lat"<<endl;

Mruczek.Miow();


/*cout <<"masz dosc? wcisnij k i enter: "<< endl;
cin >>znak;
if (znak=='k') exit(0);*/
 getch(); //to ostatnie wpisuje zamiennie. oczywiście iostream i conio.h są                                   /dodane
return 0;

}

[/quote]

0

Teraz chyba działa.

#include <iostream>

using namespace std;

class Cat
{
 public:
         int GetAge();
         void SetAge(int age);
         void Miow();
 private:
         int itsAge;
};
 int Cat::GetAge()
 {
         return itsAge;
 }
 void Cat::SetAge(int age)
 {
         itsAge=age;
 }
 void Cat::Miow()
 {
         cout <<"Miauuuuuuuuuuuu"<<endl;
 }
 int main()
 {
         Cat Mruczek;
         char znak=0;
         
         Mruczek.SetAge(9);
         
         cout << "Mruczek jest kotem i ma: " << endl;
         cout << Mruczek.GetAge() << "lat" << endl;
         
         Mruczek.Miow();
         
         getchar();
         return 0;
 }
0

Masz błąd w funkcji ustawiającej wiek, ma być
void Cat::SetAge(int age)
{
itsAge=age;
}

W twojej wersji tworzyła lokalną wersję tej zmiennej więc nic dziwnego że wyświetlała śmieci

ps dodałbym spację przed lat.

edit: czytaj warningi, ja dostałem ostrzeżenie że itsage nie ma przypisywanej wartości.

0
sig napisał(a):

Masz błąd w funkcji ustawiającej wiek, ma być
void Cat::SetAge(int age)
{
itsAge=age;
}

W twojej wersji tworzyła lokalną wersję tej zmiennej więc nic dziwnego że wyświetlała śmieci

ps dodałbym spację przed lat.

edit: czytaj warningi, ja dostałem ostrzeżenie że itsage nie ma przypisywanej wartości.

To chyba przez ten upał,bo nie widzę żadnej różnicy miedzy twoja wersją a moją.

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