SFML - 对象静态定义

SFML - Object Static Definition

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

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

public:
  static void Start();

private:
  static sf::RenderWindow _mainWindow;
};

sf 是命名空间,类似于 stdcout 的命名空间。从技术上讲,这意味着 "Simple and Fast",但除了提供一个独特的上下文来定义函数之外,它实际上没有任何意义。 这样一来,例如,您可以在 foobar 命名空间中都有一个 printNumber() 函数,具有不同的实现,并且您可以使用 foo::printNumber() 调用它们中的每一个和 bar::printNumber()。这是一种组织技巧。

在这种情况下,static _mainWindow 成员意味着无论您创建多少游戏 class 实例,都只会创建一个实例 [=19] =].因此,您将无法像往常一样访问它,this->mainWindow,但是因为该实例独立于任何特定的 Game 实例,所以您可以使用 Game::_mainWindow 访问它。不确定 这可能只是为了确保只打开一个 window。

注意:namespacestatic 都使用语法 foo::bar,意思是 "look for bar in context foo"。