C++ 私有(private)数组访问

标签 c++ arrays private

我有一个类,它有一个私有(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/

相关文章:

c++ - VC++的任务执行框架?

c++ - 如何从 C++ 中的值的 vector<bool> 构造整数值

c++ - 根据枚举值调用特定的模板函数

JavaScript:如何从 5 维数组中删除 2 列?

javascript - JavaScript 中的私有(private)变量及其可见性

c++ - 尝试设置C编程环境

Java,将小型二维数组与较大二维数组中的每个可能的迭代进行比较

Python:如果可能的话,使私有(private)类方法始终静态?

c++ - 隐藏私有(private)数据成员? (C++)

C 编程 - 字符数组与字符串数组寻址消歧