, так что это, вероятно, что-то тривальное, но мне действительно нужно знать, почему это происходит так, как это происходит, и как я могу его изменить.SFML - sf :: RenderWindow, деля файлы
Итак, я начал изучать SFML сегодня, и я читал SFML Game Development ebook и видел очень интересный и хорошо написанный код. Я прошел учебники по SFML и начал изучать язык, поскольку я понял общее представление о том, как он должен работать.
Поэтому я хотел запомнить новые ключевые слова, конструкторы, методы, а также сделать мой код хорошо организованным - используя то, что я научился, чтобы он был чистым и легким в редактировании, отлаживать.
Мой первый код должен был отображать Окно, и я создал тот же код в обоих направлениях, обычно помещая все в основную функцию и разделяя. Дело в том, что первое окно отображается до тех пор, пока я его не закрою, а второй отображается меньше секунды, а программа выключается.
Это, вероятно, потому, что деструктор называется сразу после включения его и добавления дополнительных функций, чтобы сохранить занятый объект, но это хорошо, я хочу его понять. Это последнее, что я действительно не понимаю, поскольку я изучил объективное программирование. Способ работы объектов. Сразу после того, как я их создаю, я использую их для определенной задачи, но потом, когда я закончил, они удаляются, а иногда я снова нуждаюсь в них. Я просто хочу понять, как это работает и найти действительно легкое и быстрое решение/идею, чтобы он работал до тех пор, пока я этого хочу.
Код:
Первая программа:
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow mainWindow(sf::VideoMode(800,600),"Main Window");
while(mainWindow.isOpen())
{
sf::Event openEvent;
while(mainWindow.pollEvent(openEvent))
{
switch(openEvent.type)
{
case sf::Event::Closed:
mainWindow.close();
break;
}
mainWindow.clear();
mainWindow.display();
}
}
}
Вторая программа:
main.cpp
#include <SFML/Graphics.hpp>
#include "Game.cpp"
int main()
{
Game game;
game.run();
}
Game.cpp
#include "Game.h"
Game::Game()
{
sf::RenderWindow mainWindow(sf::VideoMode(800,600),"Main Window");
}
void Game::run()
{
while(mainWindow.isOpen())
{
sf::Event openEvent;
while(mainWindow.pollEvent(openEvent))
{
switch(openEvent.type)
{
case sf::Event::Closed:
mainWindow.close();
break;
}
}
mainWindow.clear();
mainWindow.display();
}
}
Game.h
class Game
{
public:
Game();
void run();
private:
sf::RenderWindow mainWindow;
};
Спасибо за ответ :) – Advent