나는 this tutorial을 사용하고 있습니다,하지만 난 그것에서 코드를 컴파일 할 때 :"lvalue로 사용되는 rvalue"경고를 피하는 방법은 무엇입니까?
D3DXMatrixLookAtLH(
&matView,
&D3DXVECTOR3(0.0f, 10.0f, 0.0f), // warning C4238
&D3DXVECTOR3(0.0f, 0.0f, 0.0f), // warning C4238
&D3DXVECTOR3(0.0f, 0.0f, 1.0f) // warning C4238
);
를 내가 얻을 :
으로 사용되는 클래스를 rvalue를경고 C4238를 : 비표준 확장 사용 : 좌변
추가 코드 줄없이이 작업을 수행하는 적절한 (경고없이) 방법은 무엇입니까?
또한, 그 코드 줄에 대해 나쁘다는 것이 궁금합니다. 정상적으로 작동하면 경고 메시지를 표시하는 이유는 무엇입니까? 아니면 ...?
사실, 임시 주소 (rvalue)를 사용할 수 없습니다. 'operator &'*는 lvalue가 필요합니다. 경고는 그것을 정확하게 설명합니다. 그러나, 사실상 말하자면, 임시 코드는 완전한 표현식 (함수 호출)이 끝날 때까지 살아 있기 때문에 코드는 괜찮습니다. – Xeo
코드가 이식 가능하지 않기 때문에 경고 메시지가 나타납니다. 당신의 컴파일러는 그것을 허용하는 비표준 확장을 가지고있다; 다른 컴파일러는이를 거부 할 수 있습니다. –
나쁜 점은 다음에 실수로 'matView'를 일시적으로 만들 것입니다. – lapk