Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 17.04.2020
Сообщений: 33

Функция не принимает разыменованный указатель на ввод, R6025 pure virtual function call

06.01.2024, 23:51. Показов 3041. Ответов 24

Студворк — интернет-сервис помощи студентам
Здравствуйте, функция не хочет есть разыменованный указатель!
Выдаёт ошибка R6025 pure virtual function call, что делать?

Тут классы из SFML, но к самой библиотеке ошибка не относиться.

sf::Sprite — класс спрайта; Sprite0, Sprite1 и т.д. — его объекты.
window — объект класса sf::RenderWindow, метод draw() принимает объекты sf::Sprite на ввод.

C++
1
2
3
4
5
6
7
8
9
10
11
12
//Псевдокод
std::vector <sf::Sprite *> sprtPtr(0);
 
sprtPtr.push_back(&Sprite0)
sprtPtr.push_back(&Sprite1)
sprtPtr.push_back(&Sprite2)
//...
sprtPtr.push_back(&SpriteN)
 
//Рисуем Sprite1:
window.draw(*sprtPtr.at(1))
//выдаёт R6025 pure virtual function call
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.01.2024, 23:51
Ответы с готовыми решениями:

R6025 pure virtual function call
Ошибка - r6025 pure virtual function call. Что не так? #include &lt;iostream&gt; #include &lt;cstring&gt; using namespace std; class...

R6025 pure virtual function call при вызове метода, реализованного в дочернем классе
Всем привет. Вот такая ошибка у меня возникает при вызове метода, который реализован в дочернем классе, но потом он почему-то становится...

[Trace mode] Ошибка при попытке создать FDB диаграмму: R6025 pure virtual function call
Всем доброго времени суток. Нигде не могу найти решение : Делаем лабораторную работу по trace mode - часть вторая из справки...

24
1 / 1 / 0
Регистрация: 17.04.2020
Сообщений: 33
07.01.2024, 19:08  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Так это до или после вашего перехода на new? Хотелось бы видеть тот код, к которому относился изначальный вопрос.
Да, это после. Если нужен до, то тогда будет так:

C++
1
2
3
4
5
6
//sprt.h
#pragma once
#include <SFML/Graphics.hpp>
 
void sprtBuild(sf::String sourse);
sf::Sprite sprtGet();
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//sprt.cpp
#include "sprt.h"
 
using namespace sf;
 
static Texture SprtText;
static Sprite Sprt;
 
void sprtBuild(String sourse) {
    SprtText.loadFromFile(sourse);
    Sprt.setTexture(SprtText);
}
 
sf::Sprite sprtGet() {
    return Sprt;
}
А в main.cpp нужно будет взять ячейку адреса:
sprtPtr.push_back(&sprtGet());
0
07.01.2024, 19:13

Не по теме:

А какой вообще смысл создавать игры в SFML? Посмотрел на игры, которые были сделаны на SFML, просто в недоумении. Зачем себя насиловать С++? Такие игры (которые очень напоминает флеш-игры прошлых лет) можно в десятки раз лучше и без особых усилий сделать в Godot (я уже там не говорю про всякие Unity, Unreal и прочее). Блет, вы еще на ассемблере пишите игры.

0
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
07.01.2024, 19:17
Лучший ответ Сообщение было отмечено Bomj_programist как решение

Решение

Цитата Сообщение от Bomj_programist Посмотреть сообщение
А в main.cpp нужно будет взять ячейку адреса:
sprtPtr.push_back(&sprtGet());
Это получился у вас адрес временного объекта. Он умер после окончания полного выражения (т.е. этот объект жил только до точки с запятой).

Т.е. статический объект тут не при чем. Тут играет именно возврат по значению и взятие адреса этого значения.
Было бы у вас так
C++
1
2
3
sf::Sprite& sprtGet() {
    return Sprt;
}
ничего плохого бы не случилось.

Цитата Сообщение от Bomj_programist Посмотреть сообщение
sprtPtr.push_back(&sprtGet());
Причем взять таким образом адрес возможно только в MSVC с включенными нестандартными расширениями компилятора. А так в C++ это ошибка.
1
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13233 / 6865 / 1827
Регистрация: 18.10.2014
Сообщений: 17,398
07.01.2024, 19:51
Цитата Сообщение от Bomj_programist Посмотреть сообщение
C++
1
2
3
sf::Sprite sprtGet() {
    return Sprt;
}
А в main.cpp нужно будет взять ячейку адреса:
sprtPtr.push_back(&sprtGet());
Но это невозможно даже скомпилировать. У вас оператор & применяется к prvalue. Такое в С++ не разрешается.
0
Неэпический
 Аватар для Croessmah
18150 / 10732 / 2067
Регистрация: 27.09.2012
Сообщений: 27,047
Записей в блоге: 1
07.01.2024, 20:58
Цитата Сообщение от Bomj_programist Посмотреть сообщение
static Texture SprtText;
static Sprite Sprt;
Уже писал выше:
Цитата Сообщение от Croessmah Посмотреть сообщение
Глобальный? Создавая такие объекты SFML, вы запросто напоритесь на static initialisation order fiasco.
Можете посмотреть здесь:
https://en.sfml-dev.org/forums... pic=7276.0
https://github.com/SFML/SFML/issues/741
https://github.com/MiguelMJ/Candle/issues/10
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.01.2024, 20:58

Pure virtual function call (не видит переопределенный метод)
Здравствуйте. Имеется базовый класс Cars и унаследованные от него классы Jeep, Hatchback, Sedan //Cars.h class Cars { public: ...

Что означает ошибка pure virtual function call в NFS?
Что означает ошибка pure virtual function call?

Pure virtual function definition (C++11)
Объясните мне, как ламеру, для чего может понадобится определение чисто виртуальной функции?

Protected abstract virtual base pure virtual private destructor
Хай, all) Вопрос не для начинающих и дурацкий) В разделе для экспертов публиковать не стал, чтобы не засорять его) Наткнулся тут на...

Функция принимает указатель на void и возвращает указатель на int
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru