【问题标题】:(C++) Accessing private member variables from a private base class(C++) 从私有基类访问私有成员变量
【发布时间】:2015-09-12 01:38:02
【问题描述】:

所以我的程序需要基类 Media 将成员设置为私有以及构造函数。我不能让它们受到保护或公开,谢谢。

class Media
{
public:
    friend ostream &operator<<(ostream &output, const Media &Media)
    {
        output << Media.mId << " " << Media.mTitle << " " << Media.mYear << " "
                << Media.mRatings;
        return output;
    }
    Media(int id, string title, int year, int ratings);
//void printRating();
    friend class Movie;
private:

    int mId, mYear, mRatings;
    string mTitle;
};
Media::Media(int id, string title, int year, int ratings)
{
    mId = id;
    mTitle = title;
    mYear = year;
    mRatings = ratings;
}
class Movie: public Media
{
public:
    Movie(int id, string title, int year, string director);
    string mDirector;
};
Movie::Movie(int id, string title, int year, string director) :
        mId(id), mTitle(title), mYear(year), mDirector(director)
{
}

int main()
{

    Media *ptr[10];
    ptr[0] = new Movie(352, "Fight Club", 1999, "David Fincher");
//cout << *ptr[0]<<endl;
}

【问题讨论】:

  • 你好像忘了问问题。

标签: c++ class inheritance


【解决方案1】:

基类成员不能用于initializer lists

在类的构造函数定义中,成员初始化器列表指定直接和虚拟基子对象以及非静态数据成员的初始化器。

但是你可以调用基类的构造函数:

Movie::Movie(int id, string title, int year, string director) :
    Media(id, title, year, 0), // 0 or or whatever default rating value should be
    mDirector(director)
{
}

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    相关资源
    最近更新 更多