C ++ |在课堂上非法使用结构

时间:2013-03-25 09:19:43

标签: c++ class struct

                    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:'阻止':非法使用此类型作为表达式

我该怎么办?

2 个答案:

答案 0 :(得分:2)

如果您想访问Block自己的成员变量,只需删除Block.部分就可以了。

如果您想要绝对明确,您也可以使用this->des.x代替普通des.x

答案 1 :(得分:1)

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