2012-05-05 51 views

回答

6

編譯器如何知道需要爲該類的實例分配多少空間?考慮

A foo; 
protected int A::var; 
A bar; 

如何將編譯器知道爲var分配空間時,它分配foo?第一行和第二行甚至可以用不同的翻譯單位。

所以,不,這是不可能的,因爲它沒有意義。

+0

+1爲優秀點。 – greg

6

簡而言之,不,這是不可能的。

這是不可能的,因爲標準允許關鍵字和訪問說明符protected僅在類定義中使用。

0

有沒有辦法做到正是你想要的東西(如其他人所說的),但也有「黑客」解決這個,如果你只是不想透露protected/private成員類的用戶。您可以創建PrivateBasePublicBase類,然後創建使用多個繼承或組合前兩個類的第三個類。通常情況下,這是因爲你想分發一個頭文件,但你不想透露你所有的私有成員。

Here is an example等等。我相信Scott Meyers在他的一本書中也有一個例子。這需要更多的工作,並且使維護更加複雜,所以請牢記這一點。

相關問題