안녕하세요. 좋은 강의 감사드립니다!
코드 보던 중에 이게 가능한가? 의구심이 들었는데, 실제로 컴파일 역시 실패 하길래 여쭤봅니다!
" D3DXMatrixLookAtLH(&view, &D3DXVECTOR3(0, 0, 0), &D3DXVECTOR3(0, 0, 1), &D3DXVECTOR3(0, 1, 0)); "
여기서 &D3DXVECTOR(0, 0, 0) 이런식으로 오른값의 주소값을 바로 전달 하고 있습니다.
이 경우에 D3DXVECTOR(0,0,0)을 바로 매개변수로 넘겨 주게 되면 오른값(또는 임시값)이기 이 값의 포인터(&)연산을 할수 없는 것으로 알고 있습니다.
D3DXVECTOR3 eye = D3DXVECTOR3(0, 0, 0);
D3DXVECTOR3 dir = D3DXVECTOR3(0, 0, 1);
D3DXVECTOR3 up = D3DXVECTOR3(0, 1, 0);
D3DXMatrixLookAtLH(&view, &eye, &dir, &up);
저는 이와 같이 수정해서 컴파일은 성공 했지만,,
선생님 환경에서는 어떻게 저 상태로 컴파일 된건지 궁금합니다.
안녕하세요 게임클래스 입니다.
담당 교수님 답변을 확인하느라 답변이 늦어진점 대단히 죄송합니다.
선생님께서는 학생분의 에러코드를 보면 더 확실하게 알 수 있다고
에러 메시지를 알 수 있으면 알아달라고 요청하셨습니다.
임시값도 경우에 따라서 포인터 연산이 가능한 경우가 있습니다.
위에 학생분이 작성해 주신것 처럼, 지역변수로 받을 수 참조할때.
이미 다른곳에 선언이 되어 있으면서 위처럼 사용하는 경우,
오른값도 포인터로 사용이 가능합니다.
사실 학생분이 작성한 것 처럼 지역변수로 선언해서 사용할때와 오른값으로 사용할때는
메모리가 해제되는 시점이 변경이 다르기 때문에 학생분이 작성한 것 처럼 진행하는것이 더 좋을때도 있습니다.
에러 메시지에 대해서 확인이 가능하시면 스크린샷과 함께 질문을 주시면 감사하겠습니다.
감사합니다.