簡體   English   中英

(C++) 從私有基類訪問私有成員變量

[英](C++) Accessing private member variables from a private base class

所以我的程序需要基類 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;
}

不能在初始化列表中使用基類成員:

在類的構造函數的定義中,成員初始值設定項列表指定了直接和虛擬基子對象以及非靜態數據成員的初始值設定項。

但是,您可以調用基類的構造函數:

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)
{
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM