SDL event.type error

The following is a snippet from my code:

1
2
3
4
5
6
7
8
        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_Quit)
            {
                // Quit program
                quit = true;
            }
        }


The compiler keeps returning an error regarding the event.type line; the error is:

ISO C++ forbids comparison between pointer and integer


Any ideas?



- Marc
What data type is event.type?
SDL_Event
it's not a pointer to an SDL_Event?
Here's the entire code:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
// Headers
#include "SDL/SDL.h"
#include <string>

// Setup screen
const int SCREEN_WIDTH = 800;
const int SCREEN_HEIGHT = 600;
const int SCREEN_BPP = 32;

// Create surfaces
SDL_Surface *image = NULL;
SDL_Surface *screen = NULL;

// Event structure
SDL_Event event;

// Image Loading Function
SDL_Surface *load_image(std::string filename)
{
    // Image that's loaded
    SDL_Surface* loadedImage = NULL;

    SDL_Surface* optimizedImage = NULL;

    // Load image
    loadedImage = SDL_LoadBMP(filename.c_str());

    // If image loaded
    if(loadedImage != NULL)
    {
        // Optimized Image
        optimizedImage = SDL_DisplayFormat(loadedImage);

        // Free old image
        SDL_FreeSurface(loadedImage);
    }

    // Return optimized image
    return optimizedImage;
}

void apply_surface(int x, int y, SDL_Surface* source, SDL_Surface* destination)
{
    // Temp rectangle to hold offsets
    SDL_Rect offset;

    // Apply offsets
    offset.x = x;
    offset.y = y;

    // Blit surface
    SDL_BlitSurface(source, NULL, destination, &offset);
}

bool init()
{
    // Initialize all SDL subsystems
    if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
    {
        return false;
    }

    // Setup screen
    screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE);

    // Check for screen errors
    if(screen == NULL)
    {
        return false;
    }

    // Set Window Caption
    SDL_WM_SetCaption("SDL Event Testing", NULL);

    // Return function
    return true;
}

bool load_files()
{
    // Load Image
    image = load_image("x.bmp");

    if(image == NULL)
    {
        return false;
    }

    // Return function
    return true;
}

void clean_up()
{
    // Free Images
    SDL_FreeSurface(image);

    // Quit SDL
    SDL_Quit();
}

int main(int argc, char* args[])
{
    // Make program wait for quit
    bool quit = false;

    // Initialize
    if(init() == false)
    {
        return 1;
    }

    // Load files
    if(load_files() == false)
    {
        return 1;
    }

    // Apply Surfaces
    apply_surface(0, 0, image, screen);

    // Update screen
    if(SDL_Flip(screen) == -1){
        return 1;
    }

    // While user hasn't quit
    while(quit == false)
    {
        // While there's an event
        while(SDL_PollEvent(&event))
        {
            if(event.type == SDL_Quit)
            {
                // Quit program
                quit = true;
            }
        }
    }

    // Clean up
    clean_up();

    // Return
    return 0;
}
if(event.type == SDL_Quit)

try.

if(event.type == SDL_QUIT)


SDL_Quit refers to a pointer to SQL_Quit(). That's why you are getting the pointer comparison error. SQL_QUIT is the enumerated type.
Last edited on
That worked perfectly; thanks Zaita. =D
Topic archived. No new replies allowed.