Klasy, błąd kompilacji
Ostatnio zmodyfikowano 2010-05-19 13:02
joasia_sz Temat założony przez niniejszego użytkownika |
Klasy, błąd kompilacji » 2010-05-18 18:56:29 Witam. W mojej edukacji na temat c++ stanęłam na temacie klasy. Z klasami typu public nie mam większego problemu, lecz nie potrafię już przejść klas typu private. Mimo czytania artykułu na tej stronie, kilku na innych stronach i korzystania z podręcznika nie rozumiem jak działają klasy prywatne, nie rozumiem ich składni i nie potrafię napisać programu. Oto mój program: #include<iostream>
using namespace std;
class czlowiek { private: int wiek; public: int wezwiek; int wpiszwiek; };
int czlowiek::wezwiek() { return wiek; }
int main() { osoba adam; adam.wezwiek( 5 ); count << "wiek" << adam.wezwiek << endl; system( "pause" ); return 0; } To jeden z wielu. Nie wiem, na czym polegają moje błędy. Proszę o pomoc i wytłumaczenie w sposób jak do zielonego. Pozdrawiam |
|
kamillo121 |
» 2010-05-18 20:32:27 W public, wezwiek masz jako zmienna a odwołujesz się do niej jak do funkcji więc zamiast public: int wezwiek; int wpiszwiek;
to public: int wezwiek(); void wpiszwiek( int );
do funkcji odwołujesz się jak do zmiennej : adam.wezwiek a skoro wezwiek to funkcja to powinno by ć adam.wezwiek() itd
następnie: int czlowiek::wezwiek() { return wiek; }
int main() { osoba adam; adam.wezwiek( 5 ); [..]
Pola prywatne klasy definiujesz tak jak publiczne i prawie tak samo z nich korzystasz . Prawie dlatego że dostęp do pól prywatnych mają funkcje z klasy (w twojej klasie wezwiek() i wpiszwiek) ale Ty nie masz . Czyli nie możesz odwołać się do zmiennej prywatnej "wiek" z klasy czlowiek (adma.wiek=2) , musisz skorzystać z funkcji będącymi metodami klasy i za ich pomocą pobrać wartość zmiennej ,zmienić ją . |
|
joasia_sz Temat założony przez niniejszego użytkownika |
» 2010-05-19 11:49:31 Już troszeczkę się rozjaśniło , bardzo dziękuje. Stworzyłam już swój pierwszy, działający program w klasach, lecz mam jedno za pytanko: #include<iostream>
using namespace std;
class ksiazka { public: string imie; string plec; int wiek; string pobierz_adres(); void ustaw_adres( string jego_adres ); int pobierz_telefon(); void ustaw_telefon( int jego_telefon ); private: string adres; int telefon; };
string ksiazka::pobierz_adres() { return adres; }
void ksiazka::ustaw_adres( string jego_adres ) { jego_adres = adres; }
int ksiazka::pobierz_telefon() { return telefon; }
void ksiazka::ustaw_telefon( int jego_telefon ) { jego_telefon = telefon; } int main() { ksiazka osoba; osoba.imie = "asia"; osoba.wiek = 25; osoba.plec = "k"; osoba.ustaw_adres( "Burakowa" ); osoba.ustaw_telefon( 505345601 ); cout << "Pani " << osoba.imie << " ma " << osoba.wiek << " lat i jest plci " << osoba.plec; cout << " . Jej adres to: " << osoba.pobierz_adres() << ", a jej telefon to :" << osoba.pobierz_telefon() << endl; system( "pause" ); return 0; }
konkretnie chodzi o to : osoba.ustaw_adres("Burakowa"); - po skompilowaniu nie jest widoczna nazw tej ulicy. Czyżbym coś źle zadeklarowała w klasach ?Ogólnie kompiluje się i jako tako jest w porządku, tylko interesuje mnie sposób zapisu danych typu string w klasach prywatnych :) Pozdrawiam i dziękuję :) |
|
DejaVu |
» 2010-05-19 12:33:34 Jest: jego_telefon = telefon; Powinno być: telefon = jego_telefon; To samo w adresie. |
|
joasia_sz Temat założony przez niniejszego użytkownika |
» 2010-05-19 13:01:47 Bardzo dziękuję, pomogło :) |
|
DejaVu |
» 2010-05-19 13:02:54 Proszę bardzo :) Problemy chyba rozwiązane, więc zamykam ;) |
|
« 1 » |