Tak jak w temacie,pole ocena zostaje niezmienione po wywołaniu funkcji dajOcene(...),niezależnie od tego czy zostało zainicjowane w konstruktorze czy nie.
Zmiana oceny setterem działa ale mam użyć funkcję zaprzyjaźnioną.
Zapewne deklaracja/definicja tej funkcji jest zła,ale nie rozumiem dlaczego tak się dzieje.
Student.h
#include "Osoba.h"
class Student : public Osoba{
private:
double ocena;
public:
friend void dajOcene(Student st,double oc);
//inne metody
};
plik Test.cpp
#include "Student.h"
// includy
int main(){
Student st("Czubek");
dajOcene(st,5.0);
cout<<endl<<"Ocena "<<st.getOcena();
//obiekty innych klas i operacje na nich
};
void dajOcene(Student st,double oc)
{
st.ocena=oc;
}