3

私は a を持っていて、struct cVector3dそれmemcpyを次のような char 配列にしています:

void  insert_into_stream(std::ostream& stream,  cVector3d vector)
{
    int length = sizeof(double)*3;
    char insert_buffer[sizeof(double)*3];
    memcpy(insert_buffer, &vector[0], length);
    stream.write(insert_buffer, length);
} 

const cVector3d vectorパラメータ リストで使用すると、" & requires l-value" エラーが発生します。

4

2 に答える 2

4

その理由は、リンクしたドキュメントにあります。

double &  operator[] (unsigned int index)
double    operator[] (unsigned int index) const

非 const バージョンを使用すると、左辺値参照が取得され、そのアドレス (参照先のアドレス) を取得できますdouble。const-version を使用すると一時的に取得され、言語はそのアドレスを取得することを禁止します。

于 2013-07-16T07:01:02.123 に答える
1

あなたの問題は、ドキュメントのここにあります:

double  operator[] (unsigned int index) const

const ベクトルを取得した場合、 operator[] は一時的なものを返します。また、一時的なアドレスを取得することはできません。

于 2013-07-16T07:02:09.377 に答える