2016-09-21 11 views
-1

私は別の構造体内にprivate構造体またはクラスを実装しようとしています。ケースIは動作しますが、ケースIIはすべてのメンバー変数を宣言した後に公開することができます。なぜそうなのか?私は、クラス定義では、デフォルトでstructのすべてのメンバー変数/関数がpublicであり、逆も同様であることを認識しています。今私はちょっと混乱して、なぜケースIIがうまくいかないのですか?どんな考え?私はケースIIのに対し、働く別の構造体内で構造体を宣言し、プライベートとして宣言されたときに問題にアクセスする

// case I 
struct impl::playlist 
{ 
    struct 
    { 
     char name_[30]; 
    }pod_t; 

}; 

// case II 
struct impl::playlist 
{ 
    class pod_t 
    { 
     private: 
     char name_[30]; // not accessible by impl member func if private 
    }; 

}; 
+0

ケースIIでは 'public:'と書いていますか? –

+0

ケースIIで公開として宣言されても動作しますが、友人は動作していないと表示されます。 – seccpur

+0

そして、具体的にどういう疑問がありますか?私はあなたが混乱しているものを手に入れません。 –

答えて

0

ケースは、publicとして宣言した後、すべてのメンバ変数可能です。なぜそうなのか? (プライベートの場合、インプルメントfuncではアクセスできません)

クラス外のパブリックメンバーのみがアクセスできます。 implのメンバ関数はクラスpod_tの外部にあるため、公開メンバはpod_tのみです。


P.S.あなたのケースIとIIは、メンバーのアクセス指定のほかに異なります。あなたの名前がpod_tという名前のオブジェクトを持っている場合は、名前のないクラスです。ケースⅡの場合、クラス名はpod_tであり、そのクラスのオブジェクトはありません。

+0

次にimplをfriendとして宣言するのはなぜですか(これも試しました)。私はしかし、ケースIを選んだ。 – seccpur

+0

@seccpurあなたの例では友人宣言はありません。 – user2079303

+0

あなたはそれを釘付けにしました。答えとして受け入れられる – seccpur

関連する問題