クラスのネストの意味は?

解決


ふぁじぃ男  2005-09-28 15:10:18  No: 59131  IP: 192.*.*.*

初歩的な質問だと思いますが、お願いします。

質問の内容はタイトル通りです。
現在あるプログラムのソースを参考にしてクラスについて学んでいる最中なのですが、ソースの一部にクラスをネストしている部分がありました。
こうすることで、どのような効果?があるのでしょうか。

一見friendクラスと同じなのかな…と思ったのですが、内部クラスから外部クラス?のメンバへアクセスできないようですし…。
それともオブジェクト指向の考え方から、ネストされたクラスがあるクラスに含まれていた方がいいだけで、直接的なつながりはないのでしょうか?

いまいちわからないので、質問させていただきました。

編集 削除
επιστημη  2005-09-28 15:19:06  No: 59132  IP: 192.*.*.*

> ソースの一部にクラスをネストしている部分がありました。
> こうすることで、どのような効果?があるのでしょうか。

スコープを限定できます。

class Me {
  class tool { ... };
};

class You {
  class tool { ... };
};

なんてとき、Me::toolとYou::toolは別物で名前がカブらない。

編集 削除
ふぁじぃ男  2005-09-28 17:37:11  No: 59133  IP: 192.*.*.*

回答ありがとうございます。
なるほど、スコープの問題だったのですね。

ちなみに、
class A {
  class B{ ... };
};
と記述した場合と、
class A {
 ...
};
class B {
 ...  
};
のように記述した場合に、スコープ以外の点での違いはないのでしょうか?

編集 削除
ふぁじぃ男  2005-09-28 17:38:27  No: 59134  IP: 192.*.*.*

「解決」にして質問してすみません(汗
ミスでした。

もう少し自分でクラスのネストについていろいろ調べてみます。

編集 削除
dairygoods  2005-09-28 19:40:53  No: 59135  IP: 192.*.*.*

private や protected なクラスが作れます。

編集 削除
シャノン  2005-09-29 01:19:13  No: 59136  IP: 192.*.*.*

内部クラスは、外部クラスと関係があり、一緒に使うものであることを示すことができるとか。
private なクラスならば、外部クラスの実装のためだけに用意することができますね。

編集 削除
ふぁじぃ男  2005-09-29 12:44:44  No: 59137  IP: 192.*.*.*

なるほど、内部クラスとはそういうものなのですね。
dairygoodsさん シャノンさん、ありがとうございます。

編集 削除