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

解決


ふぁじぃ男  2005-09-29 00:10:18  No: 59131

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

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

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

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


επιστημη  2005-09-29 00:19:06  No: 59132

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

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

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

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

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


ふぁじぃ男  2005-09-29 02:37:11  No: 59133

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

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


ふぁじぃ男  2005-09-29 02:38:27  No: 59134

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

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


dairygoods  2005-09-29 04:40:53  No: 59135

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


シャノン  2005-09-29 10:19:13  No: 59136

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


ふぁじぃ男  2005-09-29 21:44:44  No: 59137

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加