void mouse(int btn,int state,int x,int y)
{
if( btn == GLUT_LEFT_BUTTON && state = GLUT_DOWN ) axis = 0;
if( btn == GLUT_MIDDLE_BUTTON && state = GLUT_DOWN ) axis = 1;
if( btn == GLUT_RIGHT_BUTTON && state = GLUT_DOWN ) axis = 2;
theta[axis]+=2.0;
if( theta[axis]>360 ) theta[axis]-=360;
display();
}
标识符btn
。上面的代码给了我修改左值错误。我不知道为什么。请帮我解决这个问题。任何帮助都会非常感激。
答案 0 :(得分:2)
您确定:state = GLUT_DOWN
...
void mouse(int btn,int state,int x,int y)
{
if( btn == GLUT_LEFT_BUTTON && state = GLUT_DOWN ) axis = 0;
if( btn == GLUT_MIDDLE_BUTTON && state = GLUT_DOWN ) axis = 1;
if( btn == GLUT_RIGHT_BUTTON && state = GLUT_DOWN ) axis = 2;
theta[axis]+=2.0;
if( theta[axis]>360 ) theta[axis]-=360;
display();
}
...在if语句中。它分配值 - 它不会比较。如果指定的值不等于0
,则将其评估为true。
答案 1 :(得分:1)
问题是
if( btn == GLUT_LEFT_BUTTON && state = GLUT_DOWN ) axis = 0;
^
assignment
它正在尝试将GLUT_DOWN
分配给btn == GLUT_LEFT_BUTTON && state
,这不是可修改的左值。
在上面的陈述中,我认为你希望想要比较,即
if( btn == GLUT_LEFT_BUTTON && state == GLUT_DOWN ) axis = 0;
^^
equality comparison