フレンド関数になれるのは....について

解決


くろのすけ  2006-11-18 16:21:43  No: 63633  IP: [192.*.*.*]

(メンバ関数との違いについての説明で)
『フレンド関数になれるのは、クラス外で定義される通常の非メンバ関数か、別のクラスのメンバ関数です。』(※)
クラスの中で定義されることもあると思うんですが、
これってどういうことでしょう?

※明解C++(柴田望洋/著)にそう書かれていました。

編集    削除
επιστημη  2006-11-18 16:55:24  No: 63634  IP: [192.*.*.*]

class foo {
private:
  int n;
  friend void print(const foo& f) { cout << f.n; } // [*]
};

こんなやつのことかしら?
関数 print はクラスの中で定義されてはいますけど、
クラスのメンバではありません。だから意味的には"外"です。

↓これをinline定義したのだから。

class foo {
private:
  int n;
  friend void print(const foo& f);
};

void print(const foo& f) { cout << f.n; }

編集    削除
くろのすけ  2006-11-20 02:25:47  No: 63635  IP: [192.*.*.*]

ありがとうございます。
そういうことですか。分かりました。

編集    削除