2016-09-21 38 views
-1

我想在另一個結構中實現一個專用結構或類。第一種情況下工作,第二種情況下,所有成員變量都是公開的。爲什麼這樣?我知道,默認情況下,所有成員變量/結構中的函數都是公共的,反之亦然。現在我有點困惑爲什麼情況二不起作用?任何想法?在另一個結構中聲明結構並在聲明爲私有時訪問問題

// 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

你的意思是在情況二寫'public:'嗎? –

+0

如果在宣告朋友似乎沒有工作的情況下宣佈爲公共,那麼它會起作用 – seccpur

+0

那麼您具體有什麼疑問?我不明白你感到困惑。 –

回答

0

案例我的作品,而案例二是可能的聲明後,所有成員變量爲public。爲什麼這樣? (如果私密,則不能通過impl成員func訪問)

只有公共成員可以在課外訪問。由於impl的成員函數不屬於類pod_t,因此只有公衆成員pod_t可用。


P.S.除了會員的訪問說明符之外,您的案例I和II是不同的。如果我有一個名稱爲pod_t的對象,其類型是未命名的類。在情況II中,你有一個名字爲pod_t的班級,並且沒有該班級的任何對象。

+0

然後爲什麼不應該把impl聲明爲朋友工作呢(我也試過了)?然而,我選擇了我的情況。 – seccpur

+0

@seccpur在你的例子中你沒有朋友聲明。 – user2079303

+0

你釘了它。接受爲答案 – seccpur