私は、charポインタをdoubleポインタに変換しなければならない関数を持っています。もともとコードは(double *)data
と書かれていましたが、データはchar *ですが、これはcppcheckを "互換性のないバイナリデータ表現"として警告していました。 Cスタイルのメソッド。char *をdouble *に変換するにはどうすればよいですか?
私はstatic_cast
、dynamic_cast
、およびreinterpret_cast
を試しましたが、正しく動作していません。 atof
はダブルに変換できますが、lvalue required as unary ‘&’ operand
と書いてあるので、ダブル*でこれを使用することはできません - double *vd = &atof(data)
- ここで
は、私が働いているものの例である:
exStateData convertToStateData(char* data, int size) {
...
unsigned int vd_size = *((unsigned int*) data);
data += sizeof(unsigned int);
...
double *vd = (double*)data;
return exStateData(vd, vd + vd_size);
}
私は、二重*へのchar *にキャストできますか?
あなたがしようとしていることとその理由は、まったく明確ではありません。あなたがしようとしていることを理解するのに十分なコードを教えてください。 –
[最小、完全、および検証可能な例](https://stackoverflow.com/help/mcve)を作成して表示できますか?注:MCVEには、さまざまなサンプル入力(すべての側面を示す)と望ましい出力が含まれている必要があります。 – Akira
また、あなたが 'atof'の戻り値のアドレスを取ることができたとしても、それは良いことではありません。この値は、そのステートメントが完了するとすぐに存在しなくなります。したがって、存在しない一時的な一時アドレスを持つことになります。 (試してみると、いくつかの誤解があなたの質問の背後にあるかもしれないことが示唆されていますが、もしかしたらどうすればいいかわかりません) –