c++ - 如何在 C++ 中访问子类中父类的私有变量

您能否在下面的代码中查看我的包类的重叠运算符。是否可以在子类中访问父类的私有变量?我所做的是我使用成员函数为包类编写了一个重载运算符,但它说“变量't'在此处使用时未初始化”。走到最后,你会看到重叠的运算符。

#include

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;

}