Можете ли вы взглянуть на мой перегруженный оператор для класса пакета в моем коде ниже.Можно ли получить доступ к закрытым переменным родительского класса в дочернем классе?То, что я сделал, я использовал функции-члены для написания перегруженного оператора для класса пакета, но он говорит: «Переменная 't' неинициализируется при использовании здесь". Идите до конца и вы увидите наложенного оператора.
#include <iostream>
using namespace std;
// Ticket Class
class Ticket
{
private:
int runTime;
string movieName;
public:
Ticket(int, string);
void setMovieName(string);
void setRunTime(int);
string getMovieName();
int getRunTime();
friend ostream &operator <<(ostream &stream, const Ticket&);
};
// Package Class
class Package : public Ticket
{
private:
string snackName;
public:
Package(int, string, string);
void setSnackName(string);
string getSnackName();
friend ostream &operator <<(ostream &stream, const Package&);
};
int main()
{
}
// Ticket Class empty constructor
Ticket::Ticket(int rnTime, string mvTime) : runTime(rnTime), movieName(mvTime){}
// Ticket Class setter
void Ticket::setMovieName(string mv)
{
movieName = mv;
}
// Ticket class setter
void Ticket::setRunTime(int rn)
{
runTime = rn;
}
// Ticket class getter
string Ticket::getMovieName()
{
return movieName;
}
// Ticket Class getter
int Ticket::getRunTime()
{
return runTime;
}
// Ticket class friend overloaded function
ostream &operator <<(ostream &stream, const Ticket &t)
{
stream << "Movie name: " << t.movieName << endl;
stream << "Run time: " << t.runTime << endl;
return stream;
}
// Child Class empty Constructor
Package::Package(int rnTime, string mvTime, string snTime) : Ticket(rnTime,mvTime), snackName(snTime){}
// Package Class setter
void Package::setSnackName(string sn)
{
snackName = sn;
}
// Package Class Getter
string Package::getSnackName()
{
return snackName;
}
// Package class friend overloaded function
ostream &operator <<(ostream &stream, const Package &p)
{
Ticket *t; // compilers says "Variable 't' is uninitialized when used here"
stream << "Movie: " << t->getMovieName() << endl;
stream << "Run time: " << t->getRunTime() << endl;
stream << "Snack name: " << p.snackName << endl;
return stream;
}