/ / Obtención de un error de tiempo de ejecución al mover la variable al archivo de cabecera [duplicado] - c ++, runtime, directx, directx-11

Obtención de error de tiempo de ejecución al mover la variable al archivo de encabezado [duplicado] - c ++, runtime, directx, directx-11

Estoy trabajando en una aplicación DirectX, y estoyTengo algunos problemas para multiplicar 2 matrices juntas, cuando intento obtener un error de tiempo de ejecución. Solo obtengo el error si declaro las matrices en mi encabezado, si las declaro localmente en la función funciona bien. Este no es el único lugar en la aplicación donde obtengo este tipo de error.


GraphicClass.cpp

void GraphicClass::UpdateScene()
{
Cube1World = DirectX::XMMatrixIdentity();

DirectX::XMVECTOR rotaxis = DirectX::XMVectorSet(0.0f, 1.0f, 0.0f, 0.0f);
Rotation = DirectX::XMMatrixRotationAxis(rotaxis, rot);
Translation = DirectX::XMMatrixTranslation(0.0f, 0.0f, 4.0f);

Cube1World = Translation * Rotation; //I get run time error on this line
}

GraphicClass.h

class GraphicClass{

DirectX::XMMATRIX Cube1World;
DirectX::XMMATRIX Rotation;
DirectX::XMMATRIX Translation;
float rot = 0.01f;

//other Code
}

Mensaje de error

Unhandled exception at 0x002F4C0F in Engine.exe: 0xC0000005: Access violation reading location 0xFFFFFFFF.

Puedo declarar Cube1World en el archivo de cabecera, pero si intento hacerlo con Rotación o Traducción obtengo el error de tiempo de ejecución.

Estoy ejecutando Windows 8.1 con Visual Studio 2015 y la última versión de DirectX SDK. Espero que haya explicado el problema lo suficientemente bien, gracias de antemano.

Respuestas

3 para la respuesta № 1

Intenta definir un constructor y luego inicializa tus datos en el interior. Para evitar la inclusión múltiple, incluya incluir guardas en el archivo * .h o use #pragma una vez.


1 para la respuesta № 2

Encontré la respuesta en este hilo.

Crash after m = XMMatrixIdentity () - ¿memoria de asignación en las clases?

"En el libro" Introducción a la programación de juegos en 3D con Directx 11 "de" Frank D. Luna "dice:

No utilice XMMATRIX como miembro de una clase o estructura. Siempre use XMFloat4x4 y cargue y guarde de nuevo si lo necesita. "