/ / Obtendo erro de tempo de execução ao mover a variável para o arquivo de cabeçalho [duplicado] - c ++, runtime, directx, directx-11

Obtendo erro de tempo de execução ao mover a variável para o arquivo de cabeçalho [duplicado] - c ++, runtime, directx, directx-11

Eu estou trabalhando em um aplicativo DirectX, e eu estoutendo algum problema multiplicando 2 matrizes juntas, quando tento obter um erro de tempo de execução. Eu só recebo o erro se eu declarar as matrizes no meu cabeçalho, se eu declará-las localmente na função funciona bem. Este não é o único lugar na aplicação onde eu recebo este tipo de erro.


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
}

Mensagem de erro

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

Eu sou capaz de declarar Cube1World no arquivo de cabeçalho, mas se eu tentar fazer isso com rotação ou tradução eu recebo o erro de tempo de execução.

Eu estou executando o windows 8.1 com visual studio 2015 e o mais recente directx sdk. Espero ter explicado bem o problema, obrigado antecipadamente.

Respostas:

3 para resposta № 1

Tente definir um Construtor e depois inicialize seus dados dentro dele. Para evitar várias inclusões, inclua guardas de inclusão no arquivo * .h ou use #pragma uma vez.


1 para resposta № 2

Eu encontrei a resposta neste tópico

Crash após m = XMMatrixIdentity () - memória de alias em classes?

"No Livro" Introdução à Programação de Jogos em 3D com o Directx 11 "de" Frank D. Luna "diz:

Não use XMMATRIX como membro de uma classe ou estrutura. Sempre use o XMFloat4x4 e carregue e armazene de volta se você precisar. "