你如何 return 一个 sf::RenderWindow?
How do you return an sf::RenderWindow?
所以我正在研究一个微型引擎,以探索 SFML。我目前正在使用 WindowManager class。这是我的代码。
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
}
};
如果你看一下 sf::RenderWindow
的继承关系图:
您会注意到它继承自 sf::NonCopyable
。所以你不能 return 它的副本...因为它的复制构造函数和赋值运算符是私有的。
您可以改为 return sf::RenderWindow&
,或 sf::RenderWindow*
,或 std::shared_ptr<sf::RenderWindow>
,或 ...
我怀疑你想在你的 getter 中复制一个 window。我猜你想 return 引用你的 window:
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;
}
};
所以我正在研究一个微型引擎,以探索 SFML。我目前正在使用 WindowManager class。这是我的代码。
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
}
};
如果你看一下 sf::RenderWindow
的继承关系图:
您会注意到它继承自 sf::NonCopyable
。所以你不能 return 它的副本...因为它的复制构造函数和赋值运算符是私有的。
您可以改为 return sf::RenderWindow&
,或 sf::RenderWindow*
,或 std::shared_ptr<sf::RenderWindow>
,或 ...
我怀疑你想在你的 getter 中复制一个 window。我猜你想 return 引用你的 window:
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;
}
};