0
                    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 error C2275: 'Block' : 非法使用这种类型作为表达式时发现错误

我能做些什么 ?

4

2 回答 2

2

如果要访问 Block 自己的成员变量,只需删除Block.部分即可。

如果你想绝对明确,你也可以使用 usethis->des.x而不是 plain des.x

于 2013-03-25T09:22:36.470 回答
1

您在表达式中使用类名作为前缀。这是无效的语法,在类中您不需要前缀即可访问成员。Block.des.x用替换表达式des.x

于 2013-03-25T09:24:09.437 回答