DirectX SDK のチュートリアルを見ていました。チュートリアル 5 は正常に動作しますが、コードをコピーして独自のクラスに分離した後、アプリケーションの起動中に奇妙なエラーが発生しました。
行は次のとおりです。
g_World1 = XMMatrixIdentity();
そのため、次のような xnamathmatrix.int operator= でエラーが発生しました。
XMFINLINE _XMMATRIX& _XMMATRIX::operator=
(
CONST _XMMATRIX& M
)
{
r[0] = M.r[0];
r[1] = M.r[1];
r[2] = M.r[2];
r[3] = M.r[3];
return *this;
}
エラーメッセージは次のとおりです。
Access violation reading location 0xffffffff
XMFLOAT4X4 / XMMATRIXに接続された何かが原因である可能性があることをどこかで読みました:
XMFLOAT4X4 を使用して行列を格納し、XMMATRIX のみを使用することを検討しましたか?
しかし、私はすでに XMMATRIX を使用していると思います。
MyClass.h:
private:
XMMATRIX g_World1;
MyClass.cpp:
void init(){
g_World1 = XMMatrixIdentity();
}
XMMATRIX g_World1; を変更する必要はないと思います。XMFLOAT4X4 g_World1 に、次のようなエラーが生成されるためです。
エラー C2679: バイナリ '=' : 'XMMATRIX' 型の右側のオペランドを取る演算子が見つかりません (または、受け入れ可能な変換がありません)