【发布时间】:2017-04-04 03:02:31
【问题描述】:
// gamewindow.hpp
#include <SFML/Graphics.hpp>
#include <string>
#include <cstdint>
class GameWindow : public sf::RenderWindow
{
public:
GameWindow(const uint32_t&, const uint32_t&, const std::string&);
void toggleFullscreen();
static const ResolutionSetting w640h480,
w1600h900,
w1920h1080,
w2560h1440;
private:
class ResolutionSetting
{
public:
ResolutionSetting(const uint32_t& width, const uint32_t& height)
: res(width, height) {}
private:
sf::Vector2u res;
};
std::string _title;
uint32_t _width;
uint32_t _height;
};
我正在尝试初始化GameWindow 类中的公共ResolutionSetting 对象,其中ResolutionSetting 类被定义为GameWindow 中的private 类。
我看过 this 帖子,其中详细说明了如何初始化 static const 类的成员,但这不包括从类范围外无法访问所述成员的类型定义的情况(例如当使用private 访问规则指定类型时)。
我该如何初始化这些对象?会:
const GameWindow::ResolutionSetting GameWindow::w640h480(640, 480);
或
const GameWindow::ResolutionSetting GameWindow::w640h480 = GameWindow::ResolutionSetting(640, 480);
够了吗? (假设我可以纠正ResolutionSetting 无法访问的任何可能问题)。
【问题讨论】:
标签: c++ c++11 language-lawyer