1

我对编程有点陌生,在函数头文件中跟踪到函数原型时遇到了这些错误,我认为这可能与它获得的指针数组有关。

错误变量或字段“clean_up”声明为无效

错误“按钮”未在此范围内声明

错误“按钮”未在此范围内声明

']' 标记之前的错误预期主变量

    //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 的前向声明。

函数.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。甚至更好,只需转发声明类按钮;

这将消除 function.h 中的问题,但它可能会在其他地方弹出。

作为一个通灵的猜测,你错过了一个 ; 或 } 某处。

于 2012-12-18T04:26:51.120 回答