I have two classes, and this is the header of one of them:
#ifndef WRAPPER_HPP #define WRAPPER_HPP #include <SDL/SDL.h> using namespace std; class Wrapper { private: //SDL_Surface *screen; public: static SDL_Surface *screen; static void set_screen(SDL_Surface *_screen); static void set_pixel(int x, int y, Uint8 color); static void clear_screen(int r, int g, int b); static SDL_Surface* load_image(char path[500]); static void draw_image(SDL_Surface *img, int x, int y, int width, int height); static void draw_line(int x1, int y1, int x2, int y2, Uint8 color); }; #endif
I am calling Wrapper::set_screen(screen) from another file and I get this error:
In file included from /home/david/src/aships/src/Wrapper.cpp:6:0: /home/david/src/aships/src/Wrapper.hpp: In static member function ‘static void Wrapper::set_screen(SDL_Surface*)’: /home/david/src/aships/src/Wrapper.hpp:11:18: error: invalid use of member ‘Wrapper::screen’ in static member function /home/david/src/aships/src/Wrapper.cpp:10:3: error: from this location
I also get a similar error for the definition of every single function on Wrapper.cpp, for example:
void Wrapper::set_pixel(int x, int y, Uint8 color) { /* Draws a pixel on the screen at (x, y) with color 'color' */ Uint8 *p; p = (Uint8 *) screen->pixels + y * screen->pitch + x * screen->format->BytesPerPixel; *p = color; }
On compile:
/home/david/src/aships/src/Wrapper.hpp: In static member function ‘static void Wrapper::set_pixel(int, int, Uint8)’: /home/david/src/aships/src/Wrapper.hpp:11:18: error: invalid use of member ‘Wrapper::screen’ in static member function /home/david/src/aships/src/Wrapper.cpp:17:17: error: from this location
I know it’s related to the class being static and thus the variable Wrapper.screen is not accessible or something, but I’m not sure of how to fix it. Any ideas?