RelayKa
> кажется тупые вопросы уже начались
> в общем взяла sfml 2.5.0, создала пустой проект, и кое-как скомпилировала
> это был тот еще челлендж, оказывается нужно прописать пути к include, пути к
> lib, и даже названия конкретных lib (а это аж
> sfml-graphics.lib;sfml-window.lib;sfml-system.lib;sfml-main.lib)
> после этого пустое окошко очищеное черным цветом у меня заработало.
> но потом я решила отрисовку всей графики вынести наружу в функцию, мне
> понадобилось переменную window вынести из main(), а создать потом window у меня
> не получается.
> вот такая ошибка:
sf:RenderWindow window; замени на sf:RenderWindow* window;
window = sf::... на window = new sf
window.close, window.isOpen и тд замени на window->close, window->isOpen и тд
Проблема вот в чем, видимо sf;RenderWindow не поддерживает копирование(а ты именно копируешь сейчас), потом надо превратить window в указатель и инцализировать по нормальному.
При присваивание переменной идёт всегда копирование
При присваивание ссылки идёт именно присваивание ссылки
X x = X(args);//инцализация
X x;//инициализация пустым конструктором
x = X(args);//инициализация и копирование в x
x.method(args);//обращение к методу объекта
X* x;//создание ссылки, которая указывает в пустоту
x = new X(args);//инициализация, получение ссылки и копирование её в x
x->method(args);//обращение к методу объекта
FlyOfFly
> а ты именно копируешь сейчас
ладно, а почему когда я пишу так:
sf::RenderWindow window = sf::RenderWindow(sf::VideoMode(windowWidth, windowHeight), "City Destroyer", sf::Style::Titlebar | sf::Style::Close);
то все нормально, я так понимаю тут то же самое копирование?
просто стоит убрать объявление наверх, и оно начинает ругаться почему-то
может оно не видит его? хотя вроде наверху объявлено
RelayKa
>
> sf::RenderWindow window = sf::RenderWindow(sf::VideoMode(windowWidth,
> windowHeight), "City Destroyer", sf::Style::Titlebar | sf::Style::Close);
> то все нормально, я так понимаю тут то же самое копирование?
> просто стоит убрать объявление наверх, и оно начинает ругаться почему-то
> может оно не видит его? хотя вроде наверху объявлено
FlyOfFly
>
> X x = X(args);//инцализация
>
> X x;//инициализация пустым конструктором
> x = X(args);//инициализация и копирование в x
> x.method(args);//обращение к методу объекта
>
> X* x;//создание ссылки, которая указывает в пустоту
> x = new X(args);//инициализация, получение ссылки и копирование её в x
> x->method(args);//обращение к методу объекта
>
>
X x = X(args);//это уже не копирование, а определение, так как происходит первый раз
X x;//тут тоже определение, ну уже неявно и при последующих операция будет копирование, так как определение происходит только первый раз
FlyOfFly
вроде сработало с new, спасибо
и спасибо за объяснения
RelayKa
>
> вроде сработало с new, спасибо
> и спасибо за объяснения
Совет, если хочешь больше разобраться, то прочитай Язык программирования C++. Базовый курс. А то, я при объяснениях все упрощаю
FlyOfFly
> А то, я при объяснениях все упрощаю
я поняла, что упрощаешь
я сейчас тут читаю: https://msdn.microsoft.com/en-us/library/s16xw1a8.aspx
но тут сухая выжимка, и пока на практике не столкнешься со всем этим - не поймешь в чем проблема
я так понимаю у меня не работало, потому что авторы библиотеки специально удалили какой-то конструктор
RelayKa
>
> я так понимаю у меня не работало, потому что авторы библиотеки специально
> удалили какой-то конструктор
Бинго, конструктор копирование
RelayKa
Ты на паскале то с указателями работу освоила? Всякие связанные структуры данных реализовывала? Если нет, надо бы потренироваться. В С/С++ без этого вообще никуда, ссылки/указатели там везде, без них ни параметры в функцию не передашь, ни даже текст на экране не напечатаешь.
Zab
> Ты на паскале то с указателями работу освоила?
Зачем? Тут (обычное для Форума) программирование по принципу "китайской комнаты" - выучивание закорючек и способов их расположения в "программе".
gudleifr
> Тут (обычное для Форума) программирование по принципу "китайской комнаты" - выучивание закорючек и способов их расположения в "программе".
На С++? Смешно! Бомбу делаем? Взорвать себя и, если повезет, еще кого-нибудь...
Zab
> Ты на паскале то с указателями работу освоила? Всякие связанные структуры
> данных реализовывала?
вроде да, освоила
делала хеш таблицу на паскале
еще avl дерево делала
это связанные структуры данных?
RelayKa
> это связанные структуры данных?
Не важно что именно ты делала. Важна тренировка по перекидыванию указателей, понимание что они вообще такое. Не знаю будешь ли ты смеяться, но чуть ли не половина будущих программистов на этом затыкается и программистами в итоге не становятся. Оно может быть непреодолимым барьером, если мозги не под то заточены.
в общем что-то написала
решила начинать с маленького чего-нибудь
заодно вспомнить си, потому что давно его не использовала
встречайте, микронано игра
нужно самолетиком бомбить здания, самолетик летит все ниже и ниже, пока не врежется в здание, либо пока все задния не разбомбят
CityDestroyer
там архив со скомпилированной программой в exe файле + исходный код
сама скомпилированная программа сразу не запуститься, нужно рядом с программой положить кучу dll от smfl, сами dll можно найти тут:
https://www.sfml-dev.org/files/SFML-2.5.0-windows-vc15-64-bit.zip
я бы их сама положила, но форум разрешает только 1Мб файл прикреплять, а с dll выходило больше 2Мб
в общем код ужасный наверное, но понимания как это правильно сделать у меня нет, поэтому буду рада любым комментариям
gudleifr
>
> Зачем? Тут (обычное для Форума) программирование по принципу "китайской
> комнаты" - выучивание закорючек и способов их расположения в "программе".
Вуду программирование на C++? Ты в порядке там? Не перекидывай свой способ написание на других
FlyOfFly
> Ты в порядке там?
Я просто сегодня злой:
Тема в архиве.
Тема закрыта.