Я пытаюсь перегрузить operator<<
из класса second
. Проблема в том, что некоторые данные, к которым я пытаюсь получить доступ, являются частными в классе first
. Почему я не могу получить доступ к частным данным, так как использую функцию друга?
Я обнаружил, что перегрузка работает только с не унаследованными частными данными.
class first
{
public:
student(string a, string b, float c, int d);
private:
string a;
string b;
float c;
int d;
int e;
static int count;
};
class second : public first
{
public:
second(string a, string b, float c, int d, string f);
friend ostream &operator << (ostream &output, second &dS);
friend istream &operator >> (istream &input, second &dS);
private:
string f;
};
// Separate File
ostream &operator <<(ostream& output, second& dS){
output << iS.a << endl;
output << iS.f << endl;
return output;
}
Это ошибка, которую я получаю:
overload.cpp:27:18: error: 'a' is a private member of 'first'
output << dS.a << endl;
^
./example.hpp:51:9: note: declared private here
string a;