当前位置:  开发笔记 > 编程语言 > 正文

全局变量类c ++

如何解决《全局变量类c++》经验,为你挑选了1个好方法。

这里的第一个问题,答案可能很简单,但我无法弄清楚.重点:在我的项目中,我创建了两个类:"GlobalVairables"和"SDLFunctions".显然,在第一个中我想存储我可以在任何其他类中关联的全局变量,而在第二个中我使用这些全局变量获得了很少的函数.这是代码:

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"和另外两个变量:

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"".而且,这些变量是公开的,所以不是这样(可能).有人能说出什么问题吗?有一些简单的解决方案,还是我必须重新组织它,不应该使用全局变量?请帮忙.



1> SergeyA..:

首先,您的变量是类的每个实例的成员,因此,通常意义上不是全局变量.您可能希望将它们声明为静态.更好的是,不要为它们创建一个类 - 而是将它们放入命名空间.像下面这样的东西(在你的.h文件中):

namespace globals {
   static const unsigned int SCREEN_WIDTH = 640;
   static const unsigned int SCREEN_HEIGHT = 1024; 
}

您可以通过以下方式在代码中引用它们:

int dot = globals::SCREEN_WIDTH;

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有