1

さて、この問題は説明するのが少し難しいので、最善を尽くします。

void SetData(void* anElement)
{
  myData = anElement;
}
void* GetData()
{
  return myData;
}

基本的に、私は自分で作成した1次元のマトリックスクラスを持っています。これをin-value(anElement)として送信し、SetData() 後で呼び出して取得したいGetData()

これにより、マトリックスの最初の要素のアドレスが保存されます。

SetData(reinterpret_cast<void*>(&myMatrix[0]));

私のマトリックスの要素はすべてフロートであるため、次のように醜いコードを作成しようと思いました。

for(int i = 0; i < 16; i++)
{
  myMatrix[i] = reinterpret_cast<float*>(aMessage->GetData())+sizeof(float)*i;
}

その結果、一部の値は正しいように見え、他の値は偽物にすぎません。

息を殺してあなたの反応を待っています=)

4

1 に答える 1

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

おそらくあなたがここで欲しいものです。に整数iを追加するfloat*と、結果のポインターはi * sizeof(float)元のポインターからバイト離れています。

于 2012-09-20T01:39:50.837 に答える