我想知道是否有人可以帮助我理解如何安全地将静态unsigned char数组从一个类传递到另一个类。如果这是微不足道的,我很抱歉,但我想确保我做对了。
例如
// 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;
};
答案 0 :(得分:1)
你真的应该使用stl或boost容器。但是,如果你有充分的理由不这样做,那么......
你传递的很好,但分配错了。
obtainedData = _data;
你应该真的要么复制数据
memcpy(obtainedData, _data, 1024);
std::copy(_data, _data+1024, obtainedData) // Thanks @Grizzly
或重新定义得到的数据变量
static unsigned char* obtainedData;
注意:
请务必考虑要传递和复制到的阵列的大小。他们保证大小相同吗?
答案 1 :(得分:0)
“安全地”或“安全地”是什么意思?
您的类型错误(您不会将1个数组分配给另一个数组)。
这是c ++所以你真正应该做的就是使用std :: string或std :: vector,即使你需要一个固定的缓冲区std :: array