std::unique_ptr 干扰某些 sf::RenderWindow 函数
std::unique_ptr interfering with certain sf::RenderWindow functions?
当我
从创建窗口的同一作用域调用它时,sf::RenderWindow::getPosition()
总是返回0, 0
而不是正确的位置。
下面是重现该问题的示例代码:
#include <iostream>
#include <memory>
#include <SFML/Graphics.hpp>
int main() {
std::unique_ptr<sf::RenderWindow> window_;
window_ = std::unique_ptr<sf::RenderWindow>(
new sf::RenderWindow(sf::VideoMode(800, 600), "asd", sf::Style::Default)
);
window_->setFramerateLimit(30);
window_->setVerticalSyncEnabled(false);
while (window_->isOpen()) {
sf::Event evt;
while (window_->pollEvent(evt)) {
if (evt.type == sf::Event::Closed) { window_->close(); }
}
window_->clear();
window_->display();
}
const sf::Vector2i wpos = window_->getPosition();
std::cout << "window position: " << wpos.x << "/" << wpos.y <<std::endl;
return 0;
}
问题是:例如,我有一个类MainMenu
,我向其传递了一个sf::RenderWindow *
(带有window_.get()
)。
当我从MainMenu
调用window_->getPosition()
时,它会报告正确的位置,因此getPosition()
本身没有故障。只有当我从同一范围内(在主要范围内)调用它时才是错误的。
顺便说一下,我正在使用SFML 2.3.1
您正在while (window_->isOpen())
上循环后打印窗口位置。 这意味着窗口已关闭,即当您调用 getPosition()
时它不存在。 因此,窗口位置没有"正确"报告也就不足为奇了,因为窗口已经关闭(永久关闭,所以它没有位置)。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 如何将sf::RenderWindow传递给另一个函数
- sf::声音函数会导致链接器错误
- 为什么我的SFML将SF ::纹理作为参数传递到函数时会不断崩溃
- 调用 sf::矩形形状绘制函数
- 已定义或声明"sf::Unicode::Text::text"成员函数
- std::unique_ptr 干扰某些 sf::RenderWindow 函数
- Ubuntu的SFML"没有匹配的调用"sf:SocketUDP::Receive(sf::Packet&,sf::IPAddress&)"函数"
- R6025纯虚拟函数调用(从sf::InputStream派生的类)
- sf::Text 成员函数 getFont() 不起作用?
- 使用带有默认构造函数的sf::Shape