2013-11-27 3 views
0

Ошибка генерируется на второй линии:ошибка C2275: незаконное использование такого типа, как выражение

HRESULT Direct3DDevice9Wrapper::GetLight(DWORD Index, D3DLIGHT9 *) 
{ 
    return Direct3DDevice9->GetLight(Index, D3DLIGHT9); 
} 

D3DLIGHT9 deffinition:

typedef struct _D3DLIGHT9 
{ 
    D3DLIGHTTYPE Type;   /* Type of light source */ 
    D3DCOLORVALUE Diffuse;   /* Diffuse color of light */ 
    D3DCOLORVALUE Specular;  /* Specular color of light */ 
    D3DCOLORVALUE Ambient;   /* Ambient color of light */ 
    D3DVECTOR  Position;   /* Position in world space */ 
    D3DVECTOR  Direction;  /* Direction in world space */ 
    float   Range;   /* Cutoff range */ 
    float   Falloff;   /* Falloff */ 
    float   Attenuation0;  /* Constant attenuation */ 
    float   Attenuation1;  /* Linear attenuation */ 
    float   Attenuation2;  /* Quadratic attenuation */ 
    float   Theta;   /* Inner angle of spotlight cone */ 
    float   Phi;    /* Outer angle of spotlight cone */ 
} D3DLIGHT9; 

Я работаю в VC++, Visual Studio 2012. Там были похожими сообщениями о проблеме объявления переменных для c89, но я не могу заставить этот код работать.

+0

'Direct3DDevice9' - это тип. Вы используете его, как если бы он был переменной. То же для 'D3DLIGHT9'. Вы, кажется, знаете достаточно, чтобы правильно использовать «DWORD Index» - вы написали «GetLight (Index)», а не «GetLight (DWORD)». Так почему вы смущены о 'D3DLIGHT9'? –

ответ

2

Проблема в том, что вы не указали имя переменной для указателя D3DLIGHT9 в объявлении функции. Вам просто нужно сделать это:

HRESULT Direct3DDevice9Wrapper::GetLight(DWORD Index, D3DLIGHT9 *pLight) 
{ 
    return Direct3DDevice9->GetLight(Index, pLight); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^