我有一個類有一個私有的unsigned char *到數據緩衝區。數據緩衝區可以是可變長度的,所以我使用malloc()和free()來分配我需要保存數據的內存量。C++私有數組訪問
我的問題是,我有另一類需要訪問這些數據。我現在這樣做的方式是創建緩衝區的工作副本並將其傳遞給其他類。也就是說,我有一個函數get_data(unsigned char * copy,int size),它將大小字節複製到由副本指定的緩衝區中。緩衝區很小(約50字節),但我必須在我的程序過程中做到這一點。因此,我正在尋找一種可以讓我更加精簡的方式。
有沒有一種方法可以將數據緩衝區指針傳遞給任何其他類?他們能夠覆蓋緩衝區中的數據嗎?我知道我可以發回數據緩衝區指針的const副本,但調用者可以隨後調用const_cast並隨意修改它。也就是說,他們可以調用const_cast,然後沿着buf_ptr [2] = 0xFF;
在此先感謝您的幫助。我希望有一種方法可以在沒有調用者的可能性的情況下使用指針來破壞數據,如果他們做了一些令人討厭的事情。
如果有人正在使用const_cast,它們會比可能修改數組中某些值的問題更大。 – supersam654
const_cast應該幾乎從不使用,除非您將結果傳遞給不修改內容的函數。如果程序員const_char你的緩衝區,那麼他應該不會感到驚訝的東西崩潰。除非你有安全問題,否則我會選擇共享一個const unsigned char * –
感謝您對const_cast的所有保證。我基本上是從代碼審查/魔鬼倡導者的角度來看待這個問題。 –