你如何返回sf :: RenderWindow?

时间:2016-09-14 01:41:25

标签: c++ sfml

因此,我正在探索SFML,从而开发一个小型引擎。我目前正在使用WindowManager类。这是我的代码。

class WindowManager
{
private:
    sf::RenderWindow window;

public:
    void setWindow(int x, int y, std::string title)
    {
        window.create(sf::VideoMode(x, y, 32), title, sf::Style::Titlebar | sf::Style::Close);
    }

    sf::RenderWindow getWindow()
    {
        return window;
        //Error Here
    }
};

2 个答案:

答案 0 :(得分:4)

如果你看一下sf::RenderWindow的继承图:

inheritance diagram

你会注意到它继承自sf::NonCopyable。因此,您无法返回它的副本...因为它的复制构造函数和赋值运算符是私有的。

您可以做的是返回sf::RenderWindow&sf::RenderWindow*std::shared_ptr<sf::RenderWindow>或......

答案 1 :(得分:2)

我怀疑你想在你的getter中复制一个窗口。我猜想你要返回对你窗口的引用:

class WindowManager {
// private: private is useless there.
    sf::RenderWindow window;

public:
    // Returning a reference. Note the '&' after the type.
    const sf::RenderWindow& getWindow() const {
        return window;
    }
};