我有一个类,它有一个私有(private)的 unsigned char * 到数据缓冲区。数据缓冲区的长度可以是可变的,因此我使用 malloc() 和 free() 来分配我需要保存数据的内存量。
我的问题是我有另一个类需要访问这些数据。我目前这样做的方式是创建缓冲区的工作拷贝并将其传递给另一个类。也就是说,我有一个函数 get_data(unsigned char * copy, int size) 将 size 字节复制到 copy 指定的缓冲区中。缓冲区很小(约 50 字节),但我必须在我的程序过程中经常这样做。因此,我正在寻找一种方法来简化此过程。
有没有办法可以将数据缓冲区指针传递给任何其他类?他们能否覆盖缓冲区中的数据?我知道我可以发回数据缓冲区指针的 const 拷贝,但调用者随后可以调用 const_cast 并随意修改它。也就是说,他们可以调用 const_cast,然后调用 buf_ptr[2] = 0xFF;
在此先感谢您的帮助。我希望有一种方法可以让我只使用指针,而不会在调用者做一些令人讨厌的事情时破坏数据。
最佳答案
只需提供一个const unsigned char *
访问器:
const unsigned char * MyClass::get_buffer() const { return m_private_buffer; }
当然,使用缓冲区的人可能会决定 const_cast
并修改它,但这不是你的问题。那是他们在做一些他们知道很顽皮的事情。事实上,如果您是编写所有代码的人,那么您究竟为什么要尝试破解它?
关于C++ 私有(private)数组访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16951732/