私はthis tutorialを使用していますが、私はそれからコードコンパイルする場合:警告 "左辺値として使用されるrvalue"を回避するには?
D3DXMatrixLookAtLH(
&matView,
&D3DXVECTOR3(0.0f, 10.0f, 0.0f), // warning C4238
&D3DXVECTOR3(0.0f, 0.0f, 0.0f), // warning C4238
&D3DXVECTOR3(0.0f, 0.0f, 1.0f) // warning C4238
);
を私が取得:
として使用するクラスの右辺値を警告C4238を:非標準の拡張機能を使用:左辺値
追加のコード行なしでこれを行う適切な(警告なしの)方法は何ですか?
また、私はそのコード行について何が悪いのでしょうか?それがうまくいくのであれば、警告を出すのはなぜですか?それとも...?
事実、あなたは一時的な(rvalue)のアドレスを取ることはできません。 'operator&' *は左辺値が必要です。警告は、それを正しく示しています。しかし、実用的に言えば、仮引数は完全な式(関数呼び出し)の終わりまで生き続けるので、コードは問題ありません。 – Xeo
コードは移植性がないため、警告が表示されます。あなたのコンパイラには、それを可能にする非標準拡張があります。他のコンパイラはそれを拒否するかもしれません。 –
それは悪いことに、次回は 'matView'を偶然にも一時的にするでしょう。 – lapk