将SFML的RenderWindow对象传递到模板功能
Pass a RenderWindow object of SFML to a template function
我是新手C 程序员,我不是专业人士。我对C 中的模板感到非常困惑。
我正在使用SFML,可以创建一个窗口并处理它。在下一步中,我决定编写一个模板功能以处理生成关闭信号。但是我的代码没有编译。问题在哪里?
#include <SFML/Graphics.hpp>
#include <iostream>
template <typename T>
void EventHandler(T& window) {
std::cout << "Close event is made." << std::endl;
window.close();
std::cout << "Window is closed succesfully." << std::endl;
break;
}
int main()
{
sf::RenderWindow window(sf::VideoMode(512, 512), "SMFL Tutorial", sf::Style::Default);
sf::Event events;
while (window.isOpen())
{
while (window.pollEvent(events))
{
switch (events.type)
{
case events.Closed:
EventHandler(window);
default:
std::cout << "Unkown Events are creating." << std::endl;
break;
}
}
}
return 0;
}
您需要将中断语句从函数移动到交换机中的情况并正确使用sf::Event::EventType
枚举:
#include <SFML/Graphics.hpp>
#include <iostream>
template <typename T>
void EventHandler(T& window) {
std::cout << "Close event is made." << std::endl;
window.close();
std::cout << "Window is closed succesfully." << std::endl;
/// break; <- From here
}
int main()
{
sf::RenderWindow window(sf::VideoMode(512, 512), "SMFL Tutorial", sf::Style::Default);
sf::Event events;
while (window.isOpen())
{
while (window.pollEvent(events))
{
switch (events.type)
{
case sf::Event::Closed:
EventHandler(window);
break; /// <- To here
default:
std::cout << "Unkown Events are creating." << std::endl;
break;
}
}
}
return 0;
}
此外,为什么需要模板功能?您的EventHandler
功能可以参考sf::window
与sf::Window
和sf::RenderWindow
一起使用:
void EventHandler(sf::Window& window) {
std::cout << "Close event is made." << std::endl;
window.close();
std::cout << "Window is closed succesfully." << std::endl;
}
相关文章:
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- SFML纹理像播放器
- 如何在C++中获得"静态纯虚拟"功能?
- 如何使用AngelScript注册SFML Vector2运算符
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何修复sfml c++代码编译错误
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 将SFML的RenderWindow对象传递到模板功能
- 如何将SFML窗口声明为我所有的类功能
- SFML 帮助(使用 <Windows.h> 中的睡眠功能)
- C++ SFML 精灵位置在功能中时不会更新
- SFML atan2功能和减速
- SFML 2.0中所需的警报框功能