C++ 将一组内存从void*强制转换为类

C++ 将一组内存从void*强制转换为类,c++,memory,pointers,casting,matrix,C++,Memory,Pointers,Casting,Matrix,好的,所以这个问题有点难解释,我会尽力的 void SetData(void* anElement) { myData = anElement; } void* GetData() { return myData; } 基本上我有一个我自己制作的一维矩阵类,我想作为SetData() 然后我希望通过调用GetData() 这将保存矩阵中第一个元素的地址: SetData(reinterpret_cast<void*>(&myMatrix[0])); SetData

好的,所以这个问题有点难解释,我会尽力的

void SetData(void* anElement)
{
  myData = anElement;
}
void* GetData()
{
  return myData;
}
基本上我有一个我自己制作的一维矩阵类,我想作为
SetData()
然后我希望通过调用
GetData()

这将保存矩阵中第一个元素的地址:

SetData(reinterpret_cast<void*>(&myMatrix[0]));
SetData(重新解释cast(&myMatrix[0]);
我的矩阵中的元素都是浮点数,所以我想我会尝试这样编写代码:

for(int i = 0; i < 16; i++)
{
  myMatrix[i] = reinterpret_cast<float*>(aMessage->GetData())+sizeof(float)*i;
}
for(int i=0;i<16;i++)
{
myMatrix[i]=重新解释(aMessage->GetData())+sizeof(float)*i;
}
结果是,有些价值观看起来是正确的,而另一些则是假的

屏住呼吸等待你的回答=)

myMatrix[i]=reinterpret_cast(aMessage->GetData())+i;
这可能是你想要的。如果将整数
i
添加到
float*
,则生成的指针与原始指针的距离为
i*sizeof(float)
字节

myMatrix[i] = reinterpret_cast<float*>(aMessage->GetData())+i;