-1

我想知道是否有人可以帮助我了解如何安全地将静态无符号字符数组从一个类传递到另一个类。如果这是微不足道的,我很抱歉,但我想确保我做对了。

例如

// First Class
unsigned char data[1024];

TMainClass::TMainClass()
{
    data[34] = 1;
    data[45] = 65;
    ...
    TOtherClass obj(data);
};



// Second class
static unsigned char obtainedData[1024];

TOtherClass::TOtherClass(unsigned char* _data)
{
    obtainedData = _data;

};
4

2 回答 2

1

你真的应该使用 stl 或 boost 容器。但是,如果您有充分的理由不这样做,那么...

你通过它就好了,但分配是错误的。

obtainedData = _data;

你真的应该复制数据

memcpy(obtainedData, _data, 1024);
std::copy(_data, _data+1024, obtainedData) // Thanks @Grizzly

或重新定义所得数据变量

static unsigned char* obtainedData;

笔记:

确保您考虑要传递和复制到的数组的大小。它们是否保证尺寸相同?

于 2013-05-30T16:49:25.743 回答
0

您所说的“安全”或“安全”是什么意思?

您的类型错误(您没有将 1 个数组分配给另一个数组)。

这是 C++,所以你应该做的是使用 std::string 或 std::vector 或者即使你需要一个固定的缓冲区 std::array

于 2013-05-30T16:47:52.657 回答