私はいくつかの本当に奇妙なオペレータのマッチング誤差(C2677 & C2678)に出くわしたとき、だから私は、ゲームの世界を移動するためのユーザ入力を使用するように簡単なカメラをプログラミングする上で動作しようとしています。 彼らはラインからオペレータマッチングエラーVS2015
camPosition += moveLeftRight * camRight;
camPosition += moveBackForward * camForward;
camTarget = camPosition + camTarget;
定義されている:
float moveLeftRight = 0.0f;
float moveBackForward = 0.0f;
DirectX::XMVECTOR camPosition;
DirectX::XMVECTOR camTarget;
DirectX::XMVECTOR camForward = DirectX::XMVectorSet(0.0f, 0.0f, 1.0f, 0.0f);
DirectX::XMVECTOR camRight = DirectX::XMVectorSet(1.0f, 0.0f, 0.0f, 0.0f);
とエラーが読み:
Error C2677 binary '*': no global operator found which takes type 'DirectX::XMVECTOR' (or there is no acceptable conversion)
//Hovering "operand types are: float * DirectX::XMVECTOR"
Error C2678 binary '+': no operator found which takes a left-hand operand of type 'DirectX::XMVECTOR' (or there is no acceptable conversion)
//Hovering "operand types are: DirectX::XMVECTOR * DirectX::XMVECTOR"
それは、以前にコンパイルされています。私が名前空間DirectXを使っていたとき、それは完璧にコンパイルされました。動きのコードを追加したときに何かがうんざりしていると思った。名前空間を削除し、DirectX ::をすべての定義と関数に追加しました。エラー。 C2677とC2678のMSDNページはまったく役に立たなかった。グーグルリングは、私にシンプルなものしか与えませんでした。
Gyazoリンク:
https://gyazo.com/e2f62026d00e8fa82142b24de3fe32b5 https://gyazo.com/f1bbc321abc3a167d519bf1d671edcc6
編集:私は考え理由や方法を持っていないが、それが機能するようになりました。だから私は時間がある。 >。>コード化されています...笑。