Aktywne Wpisy

kidi1 +44
Ze względu na to, że idzie zima, czeka nas ten sam scenariusz związany z dziećmi.
Dziecko łapie wirusa grypy.
Objawy to gorączka ból głowy, kaszel, osłabienie.
Rodzic idzie z dzieckiem do lekarza.
Lekarz bada powierzchownie, ale nie robi żadnych testów.
Dziecko łapie wirusa grypy.
Objawy to gorączka ból głowy, kaszel, osłabienie.
Rodzic idzie z dzieckiem do lekarza.
Lekarz bada powierzchownie, ale nie robi żadnych testów.

PiccoloColo +46
6 a może nawet 7 znajomych się o------o przez ostatnie półtora roku. No p------o chłopów.





Dlaczego mając ciało funkcji zaprzyjaźnionej poza deklaracją klasy nie mogę dostać się do składników prywatnych klasy, a jeśli jest jako inline to mam dostęp?
plik nagłówkowy:
friend std::ostream & operator<<(std::ostream & out, const Data & date){
out << date.day << "." << date.month << "." << date.year << std::endl;
}
tutaj mogę się odnieść bezpośrednio do prywatnych pól;
plik z definicją:
std::ostream & operator<<(std::ostream & out, const Data & date){
out << date.getDay() << "." << date.getMonth() << "." << date.getYear() << std::endl;
return out;
}
A tutaj muszę użyć getterów, bo inaczej nie dostanę się do prywatnych pól
day, month, year.Oczywiście jedno z ciał jest zakomentowane.
Wrzuć kod, który Ci 'nie chce' działać.
Może problemem jest to, że operator<< powienien wyglądać
ten operator nie jest w mojej klasie tylko deklaruję z nim przyjaźń, dlatego nie daję tego zakresu wcześniej:
NazwaKlasy::operator...Co dokładnie nie działa:
Mając taką deklarację funkcji zaprzyjaźnionej w klasie
Popełniłem przed chwilą coś takiego:
//header
// header Data.hclass Data
{
int day, month, year;
public:
friend std::ostream & operator<<(std::ostream & out, const Data & date);
Miałem się pytać dlaczego tak, ale chyba już rozumiem. Przy deklaracji tej funkcji zaprzyjaźnionej musi być już znana definicja (albo deklaracja?)
ostream'a. Tak mi się wydaje, ale głowy sobie za to nie dam uciąć.W main.cpp też mam #include więc to chyba jednak deklaracja jest, bo nie