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
是命名空间,类似于 std
是 cout
的命名空间。从技术上讲,这意味着 "Simple and Fast",但除了提供一个独特的上下文来定义函数之外,它实际上没有任何意义。
这样一来,例如,您可以在 foo
和 bar
命名空间中都有一个 printNumber()
函数,具有不同的实现,并且您可以使用 foo::printNumber()
调用它们中的每一个和 bar::printNumber()
。这是一种组织技巧。
在这种情况下,static
_mainWindow
成员意味着无论您创建多少游戏 class 实例,都只会创建一个实例 [=19] =].因此,您将无法像往常一样访问它,this->mainWindow
,但是因为该实例独立于任何特定的 Game 实例,所以您可以使用 Game::_mainWindow
访问它。不确定 这可能只是为了确保只打开一个 window。
注意:namespace
和 static
都使用语法 foo::bar
,意思是 "look for bar in context foo"。
我是面向对象编程的新手。我正在通过一些代码来学习一些面向对象的编程。 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
是命名空间,类似于 std
是 cout
的命名空间。从技术上讲,这意味着 "Simple and Fast",但除了提供一个独特的上下文来定义函数之外,它实际上没有任何意义。
这样一来,例如,您可以在 foo
和 bar
命名空间中都有一个 printNumber()
函数,具有不同的实现,并且您可以使用 foo::printNumber()
调用它们中的每一个和 bar::printNumber()
。这是一种组织技巧。
在这种情况下,static
_mainWindow
成员意味着无论您创建多少游戏 class 实例,都只会创建一个实例 [=19] =].因此,您将无法像往常一样访问它,this->mainWindow
,但是因为该实例独立于任何特定的 Game 实例,所以您可以使用 Game::_mainWindow
访问它。不确定 这可能只是为了确保只打开一个 window。
注意:namespace
和 static
都使用语法 foo::bar
,意思是 "look for bar in context foo"。