2

私が持っているとしましょう:

class A {

public:
    class B {

    };

};

最初のオプションでA::Bを使用する必要があるという事実を除いて、そのパブリックネストされたクラスと独自のcppファイルで定義されている通常のBクラスとの間に違いはありますか?

4

2 に答える 2

9

A::Bのメンバーであることを除いて、基本的に違いはありません。したがって、他のメンバーが持つであろうAプライベートメンバーへのすべてのアクセス権があります。A

于 2010-09-24T21:58:30.180 に答える
-1

「B」のスコープルール以外に違いはありません。「B」を使用するクライアントは、そのスコープを「A::」で修飾する必要があります。「B」のネストは、転送参照するときに問題になることがあります。これは、C ++コンパイラでは通常、クラス内のクラスを転送参照できないためです(ただし、名前空間内のクラスを転送参照することはできます)。

于 2010-09-24T22:41:41.917 に答える