0

C ++(03または11)で、クラスの可視性を制限する方法はありますか(Javaのデフォルトまたはパッケージスコープと同様)?例えば:

Fooにのみ表示されますが、には表示されBarませんBaz

class Foo {};
class Bar { Foo foo; /* OK */ };
class Baz { Foo foo; /* not visible, error */ };

ここで提案されている匿名の名前空間ソリューション宣言されている名前空間の外部にあるクラスの可視性を制限するにはどうすればよいですか?動作していないようです。[デモ: http: //ideone.com/fsEKPu ]何か誤解したことがありますか?

4

2 に答える 2

2

Fooにのみ表示したい場合は、内にプライベートネストクラスをBar作成します。FooBar

class Bar
{
  public:

  private:
  class Foo { };
};

この方法でのみ(およびのBar宣言されたクラス)がにアクセスできます。friendBarBar::Foo

于 2013-01-10T13:42:32.697 に答える
0

Bar と Baz のクラス定義を異なる cpp ファイルに含めることができる場合は、Bar が存在する (または Bar1 と Bar2 が存在する) 同じファイルに Foo を定義し、Foo を匿名名前空間に含めます。

于 2013-01-10T14:25:17.587 に答える