Первый вопрос здесь, и ответ, вероятно, очень прост, но я не могу понять это. К моменту: В моем проекте я создал 2 класса: «GlobalVairables» и «SDLFunctions». Очевидно, что в первом я хочу хранить глобальные переменные, с которыми я мог бы относиться в любом другом классе, а во втором я получил несколько функций, используя эти глобальные переменные. Вот код:Глобальные переменные Класс C++
GlobalVariables.h
#pragma once
class GlobalVariables
{
public:
GlobalVariables(void);
~GlobalVariables(void);
const int SCREEN_WIDTH;
const int SCREEN_HEIGHT;
//The window we'll be rendering to
SDL_Window* gWindow;
//The surface contained by the window
SDL_Surface* gScreenSurface;
//The image we will load and show on the screen
SDL_Surface* gHelloWorld;
};
и GlobalVariables.cpp
#include "GlobalVariables.h"
GlobalVariables::GlobalVariables(void)
{
const int GlobalVairables::SCREEN_WIDTH = 640;
const int GlobalVariables::SCREEN_HEIGHT = 480;
SDL_Window GlobalVairables:: gWindow = NULL;
SDL_Surface GlobalVariables:: gScreenSurface = NULL;
SDL_Surface GlobalVariables:: gHelloWorld = NULL;
}
GlobalVariables::~GlobalVariables(void)
{
}
и вот одна функция SDLFunction.cpp, которая использует "gWindow" и 2 других переменных:
gWindow = SDL_CreateWindow("SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
Моя проблема в том, что при отладке я получаю
error C2065: 'gWindow' : undeclared indentifier
Конечно, в SDLFunctions.cpp я получил «#include» GlobalVariables.h "". Кроме того, эти переменные являются общедоступными, поэтому это не так (вероятно). Может кто-нибудь сказать, что случилось? Есть ли какое-то простое решение, или я должен его реорганизовать и не должен использовать глобальные переменные? Пожалуйста помоги.
Как эти переменные глобальные? Если вы измените всю строку, просто введите 'gWindow = null;' она должна работать. – forkrul
Вы, кажется, не создаете экземпляр этого класса (который, вероятно, должен быть либо одноэлементным, либо пространством имен), и вы, кажется, неправильно ссылаетесь на идентификатор ('GlobalVariables :: gWindow', а не просто' gWindow') – UnholySheep
@UnholySheep - это идиома Java: все это объект, за исключением случаев, когда это не так. Вы абсолютно правы, что это должно быть пространство имен со статическими членами данных, а не с классом. –