次の方法で共有


フレンド宣言

以前に宣言されたフレンド関数を宣言した場合その関数 nonclass外側のスコープにエクスポートされます。

フレンド宣言で宣言された関数が extern のキーワードを使用して宣言されたものとして扱われます。(extern に関する詳細については静的なストレージ クラスの指定子 を参照してください)。

グローバル スコープの関数のプロトタイプにはフレンドとして宣言できますがメンバー関数に完全なクラス宣言の前の外観のフレンドとして宣言することはできません。これが失敗する方法を次のコード例に示します :

class ForwardDeclared;   // Class name is known.
class HasFriends
{
    friend int ForwardDeclared::IsAFriend();   // C2039 error expected
};

前の例ではクラス名 ForwardDeclared 範囲を入力しますが宣言全体 (つまり関数 IsAFriend を宣言する部分 (不明です。したがってクラス HasFriends の friend の宣言はエラーを生成します。

互いのフレンドである 2 個のクラスを宣言するにはすべての 2 番目のクラスでファースト クラスのフレンドとして指定する必要があります。この制限があるのはコンパイラが 2 番目のクラスで宣言されている点だけで個々のフレンド関数を宣言するための十分な情報があります。

[!メモ]

全体の 2 番目のクラスでファースト クラスにフレンドである必要がありますが2 番目のクラスでは Friend はファースト クラスの関数であるかを選択できます。

参照

関連項目

フレンド (C++)