ďťż

Ładny brzuch

Witam.

Funkcje zaprzyjaźnione mają dostęp do składników prywtanych klasy w której są zadeklarowane jako friend. Mi przy kompilacji wyskakują błędy typu:

43 C:\Documents and Settings\Grzesiek\Pulpit\kompilacje\progba4.cpp within this context
7 C:\Documents and Settings\Grzesiek\Pulpit\kompilacje\progba4.cpp `char ksiazka::nazwa[80]' is private

oto ten program... co jest źle? Próbowałem i w Dev-C++ i w C++ Builder 6

#include <iostream.h> #include <string.h> #include <conio.h> class ksiazka{ private: char nazwa[80]; int ilosc_stron; float cena; static char autor[30]; static int ogolem; float podatek; public: ksiazka(char * nazw, int iloscstr, float cen){ strcpy(nazwa, nazw); ilosc_stron = iloscstr; podatek = 0.22; cena = podatek * cen + cen; ogolem++; pokaz(); } void pokaz() const; [color="#FF0000"] friend int zmien(char *, int, float, ksiazka &);[/color] }; void ksiazka::pokaz() const { cout << nazwa << " ma " << ilosc_stron << " i kosztuje " << cena << " zl, a autorem jest " << autor << endl; } char ksiazka::autor[30] = { "Antoni Kowalski" }; int ksiazka::ogolem; [color="#FF00FF"]int zmien(char * nazw, int iloscstr, int cen, ksiazka & k) // Tutaj pojawiają się błędy! { k.ilosc_stron = iloscstr; //tu k.cena = cen + cen * k.podatek; //tu strcpy(k.nazwa, nazw); //tu cout << " Sprawdzmy co wpisano ! " << endl; k.pokaz(); } [/color] main() { cout << " Zaczynamy ! \n Inicjalizujemy 3 egzemplarze ksiazek ! "; ksiazka symfonia(" Symfonia C++ ", 700, 90); char * nazw; int iloscstr, cen; cout << " Podaj nazwe ksiazki : "; cin >> nazw; cout << "\n Ile stron ma ksiazka : "; cin >> iloscstr; cout << "\n Podaj cene ksiazki : "; cin >> cen; zmien(nazw, iloscstr, cen, symfonia); system("pause"); }

Z góry dziękuję za pomoc!
Użytkownik Grzese edytował ten post 04 lipiec 2007, 20:24


W klasie deklarujesz przyjazn z f-cja ktora nie zostala zdefiniowana
Użytkownik Nodnol edytował ten post 04 lipiec 2007, 22:24
blad prosty..

deklarujesz funkcje z argumentami z char*, int, float, ksiazka&
a potem z char*, int, int, ksiazka&

przez co kompilator jej nie widzi, bo to juz inna funkcja ;)

mysle ze to rozwiaze problem (choc nie sprawdzalem, "z palca" pisze)

kurde... taki głupi błąd.... zmiana w definicji z int na float przedostatniego argumentu pomogła ;) . Dzięki wszystkim!

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •