1

私はプログラミングに少し慣れていないので、関数ヘッダーファイルの関数プロトタイプをトレースするこれらのエラーに遭遇しました。これは、取得するポインターの配列と関係があると思います。

エラー変数またはフィールド'clean_up'がvoidと宣言されました

エラー「ボタン」はこのスコープで宣言されていません

エラー「ボタン」はこのスコープで宣言されていません

']'トークンの前にエラーが予想されるプライマリ変数

    //Function.h

    #include "SDL/SDL.h"
    #include "SDL/SDL_image.h"
    #include <string>
    #include "functions.h"
    #include "globals.h"
    #include "Button.h"
    #include <fstream>

    void clean_up( Button *buttons[] ); // errors here

    //Function.cpp
  void clean_up( Button *buttons[] )

    {
        SDL_FreeSurface( background );
        SDL_FreeSurface( X );
        SDL_FreeSurface( O );

        for( int t = 0; t < TOTAL_BUTTONS; t++ )
        {
            delete buttons[ t ];
        }

        SDL_Quit();
    }
    //Button.h
    class Button
    {
    private:

    SDL_Rect box;
    SDL_Surface *sprite;

    public:


        bool in_use;
        bool xoro;
        int p_id;


Button( int x, int y, int id );
~Button();

void handle_events();

void show();

};

//Button.cpp

Button::Button( int x, int y, int id )
{
    box.x = x;
    box.y = y;
    box.w = 120;
    box.h = 120;
    in_use = false;
    p_id = id;
}
Button::~Button()
{
    SDL_FreeSurface( sprite );
}

どこで解決策を探すべきかよくわからなかったので、助けていただければ幸いです。ありがとう。

4

3 に答える 3

1

.hファイルにクラスButtonの前方宣言を追加してみてください。

Function.h

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include <string>
#include "functions.h"
#include "globals.h"
#include "Button.h"
#include <fstream>

class Button;
void clean_up( Button *buttons[] ); 
于 2012-12-18T04:22:23.447 に答える
0

クラスは関数の宣言/定義の前に宣言する必要があると思います。

于 2012-12-18T04:25:07.717 に答える
0

Function.hに含まれるヘッダーファイルが多すぎます。ボタンのみに依存します。

したがって、Button.hのみを含めます。またはさらに良いことに、クラスButtonを前方宣言するだけです。

これにより、function.hの問題は解消されますが、おそらく他の場所でポップアップ表示されます。

精神的な推測として、あなたは;を逃しています。またはどこかに}。

于 2012-12-18T04:26:51.120 に答える