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' : illegal use of this type as an expression でエラーを検出します

私に何ができる ?

4

2 に答える 2

2

Block 自身のメンバー変数にアクセスしたい場合は、そのBlock.部分を削除するだけで問題ありません。

絶対に明示的にしたい場合は、this->des.x代わりにuse を使用できますdes.x

于 2013-03-25T09:22:36.470 に答える
1

式のプレフィックスとしてクラス名を使用しています。これは無効な構文です。クラス内では、メンバーにアクセスするためにプレフィックスは必要ありません。などの表現を に置き換えBlock.des.xますdes.x

于 2013-03-25T09:24:09.437 に答える