C++中內部類訪問外部類的私有成員


首先,如果不知道什么是內部類InnerClass的話,就沒必要往下看了。

嘗試在C++中模仿apple objective-c 的Grand Dispatch簡化多線程編程時,使用了boost::function,線程池,和內部類技術,需要在內部類訪問外部類的私有成員,由於標准的C++不允許這么做,內部類只能訪問外部類的公有成員,為了完成設計,只好將外部類的所有成員定義成public。

在C++11中,終於允許內部類訪問外部成員的私有變量了,因此外部類中的private和public可以放心使用了。

下面是使用XE7做的測試代碼,由於XE7中32bit還是用的BCC編譯器,不支持C++11,而只有64bit才支持C++11。因此,同樣的代碼,分別在32bit和64bit編譯,一個不能通過,一個編譯成功。

在64bit下編譯成功,運行結果:

 

 

然而在32bit下編譯,BCC報錯:無法訪問私有變量:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM