フレンドクラス・friend

はてなブックマークに追加はてなブックマーク Yahoo!ブックマークに登録 ニフティクリップに追加 Livedoor クリップに追加 BuzzurlにブックマークBuzzurlにブックマーク Twitterに投稿  

フレンド関数について解説しましたが、firend宣言は、関数だけでなくクラスにも利用できます。

あるクラス(クラスAとします)の中で、別のクラス(クラスBとします)をfriend宣言すると、クラスBが、クラスAのメンバにアクセスできるようになります。
private宣言されたメンバも含み、アクセス指定子に関係なくアクセス可能となります。

#include <iostream>
 
class parent {
    private:
        int years;    // 年
        int month;    // 月
    public:
        // 年と月をセット
        void set(const int y, const int m) {
            years = y;
            month = m;
        }
 
    // フレンドする
    friend class child;
};
 
class child {
    public:
        void display(const parent obj) {
            std::cout << "years : " << obj.years << "\n";
            std::cout << "month : " << obj.month << "\n";
        }
};
 
// テストルーチン
int main() {
    class parent a_parent;
    a_parent.set(2008, 6);
 
    class child a_child;
    a_child.display(a_parent);
 
    return 0;
}

実行結果。

years : 2008
month : 6

friend 宣言がないと、「private メンバ (クラス 'parent' で宣言されている) にアクセスできません。」と、コンパイルエラーが起こります。


日時: 2008年06月09日 12:50
コメントを投稿






トラックバック

■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/244

この記事にトラックバックされる方は、参照先が分かるようにするために、「フレンドクラス・friend」へのリンクをお願いいたします。
以下のHTMLタグをトラックバック送信元ページ内に挿入して下さい。



※この記事へのリンクがない、また関連のないページからのトラックバックは反映されませんので、ご了承下さい。






あわせて読みたいブログパーツ
フィードメーター - C言語とC++勉強ルーム