如何安全地将静态char数组传递给另一个类

时间:2013-05-30 16:44:03

标签: c++

我想知道是否有人可以帮助我理解如何安全地将静态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;

};

2 个答案:

答案 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