SFML-对象静态定义

时间:2019-05-09 23:01:52

标签: c++ sfml

我是面向对象编程的新手。我正在通过一些代码来学习一些面向对象的编程。 Scratch C ++的游戏提供了一些名为Pang的游戏代码,可帮助您学习OOP概念。在下面的代码中,我可以看到从sf :: RenderWindow类创建了一个对象,并且该对象在另一个类中定义为静态。我对这里发生的事情感到困惑,是否有可能做这样的事情。如果熟悉SFML的人可以回答这个问题,我将不胜感激。另外,科幻是什么?在这里站住吗?

#pragma once
#include "SFML/Window.hpp"
#include "SFML/Graphics.hpp"
class Game
{

public:
  static void Start();

private:
  static sf::RenderWindow _mainWindow;
};

1 个答案:

答案 0 :(得分:1)

sf是名称空间,类似于stdcout的名称空间。从技术上讲,它的意思是“简单而快速”,但除了提供定义其功能的唯一上下文外,它实际上并不重要。  这样一来,例如,您可以在printNumber()foo命名空间中都拥有一个bar函数,并具有不同的实现,并且可以使用foo::printNumber()分别调用它们和bar::printNumber()。这是一种组织技术。

在这种情况下,static _mainWindow成员意味着仅创建了一个实例,无论您创建多少个Game类实例,都将永远只有一个_mainWindow。因此,您将无法像往常一样this->mainWindow来访问它,但是由于该实例独立于任何特定的Game实例,因此您可以使用Game::_mainWindow来访问它。不确定这可能只是为了确保只打开一个窗口。

注意:namespacestatic都使用语法foo::bar,意思是“在上下文foo中查找bar”。