Ребят подскажите а как в UE сортировать массивы структур? Задача, есть

массив юнитов, надо внутри массивов рассортировать в порядке инициативы. Я вызываю для TArray функцию сорт и передаю туда предикат

Код вызова
Battle->Squads.Sort(FSortByInitiative());

Код предиката
struct FSortByInitiative
{
FSortByInitiative()
{

}

bool operator()(const ABaseSquad* A, const ABaseSquad* B) const
{
return A->GetStat().Stat.Initiative > B->GetStat().Stat.Initiative;
}
};

Мне компилятор выдает следующее https://sharetext.me/aeerhoilqc

16 ответов

36 просмотров

как массив Squads обьявлен?

Dregaadan-Garon Автор вопроса

const ABaseSquad& A, const ABaseSquad& B попробуй

Поменяй с поинтера на ссылку

Dregaadan-Garon Автор вопроса
Igor Nazarov
Поменяй с поинтера на ссылку

Сработало спасибо, это потому что Sort разименовал указатель и разименованное значение пихает в функцию сортировки?

Dregaadan Garon
Сработало спасибо, это потому что Sort разименовал...

Потому что он передает ссылки на элементы, что бы не копировать их. Учти, что по этим ссылкам у тебя находятся указатели, а не сами объекты

Dregaadan Garon
А как это может стрельнуть?

nullptr засуть в масив, посмотри, стрельнет или нет

Dregaadan-Garon Автор вопроса

Так ссылка не будет невалидной, а вот сам указатель, на который ссылка ссылается, очень может быть.

Dregaadan-Garon Автор вопроса
Alexander Blintsov
Так ссылка не будет невалидной, а вот сам указател...

Я немного запутался, где это может возникнуть? Я понимю что внутри массива поинтеры могут быть нулевыми, но внутри проверки, там же референсы не на поинтеры на само значение или нет?

Dregaadan-Garon Автор вопроса
Alexander Blintsov
По идее реф на поинтер

Оу... А IsValid справится с проверкой такой?

Dregaadan Garon
Оу... А IsValid справится с проверкой такой?

Мы вот так делаем: MetaDataAssets.Sort([](const UMetaDataAsset& A, const UMetaDataAsset& B) { const UMetaDataAsset* APtr = &A; if(!APtr) return false; const UMetaDataAsset* BPtr = &B; if(!BPtr) return true; return APtr->Priority > BPtr->Priority; });

Похожие вопросы

Обсуждают сегодня

Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
13
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Как думаете через какой сервис они верифицируют?
inc.
5
Добрый день! Подскажите, каким сборщиком фронта для OctoberCMS кто пользуется? Я имею ввиду сборщики, с которыми можно работать по стандартной схеме директорий октября. Я испо...
Николай Афанасенко
2
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта