struct Ball {
SDL_Surface *picture;
SDL_Rect des;
SDL_Rect source;
int speedX;
int speedY;
};
class Block {
public:
SDL_Surface *color;
SDL_Rect des;
SDL_Rect source;
bool activation;
bool invisibility;
bool checkHit (Ball *ball);
void makeInvisible();
};
bool Block::checkHit(Ball *ball)
{
if (activation)
{
if (ball->des.x >= Block.des.x && ball->des.x <= Block.des.x + Block.source.w)
{
ball->speedY *= -1;
activation = false;
return true;
}
else return false;
}
}
当我想编译这个程序时,编译器在Block :: checkHit中发现错误 错误C2275:'阻止':非法使用此类型作为表达式
我该怎么办?
答案 0 :(得分:2)
如果您想访问Block自己的成员变量,只需删除Block.
部分就可以了。
如果您想要绝对明确,您也可以使用this->des.x
代替普通des.x
。
答案 1 :(得分:1)
您在表达式中使用类名作为前缀。这是无效的语法,在类中您不需要前缀来访问成员。将Block.des.x
等表达式替换为des.x
。