Как найти индекс структуры в структуре-ТАРЕ?

#c #unreal-engine4 #unreal-blueprint

Вопрос:

В BP есть функция, которая ищет пустое место в массиве и заполняет его. При попытке переписать его на c он выдает ошибку C2678 «двоичный»==»: оператор, принимающий левый операнд типа «const FSlotStructure», не найден (или нет приемлемого преобразования)»введите описание изображения здесь Переменные на рисунке соответствуют переменным в коде. Функция Find() сама по себе не выполняет поиск переменной FSlotStructure в массиве инвентаризации массива. В чем же заключается ошибка?

Приведенная ниже функция является пользовательской, поскольку функции «НАЙТИ» и «Установить» из библиотеки UKismetArrayLibrary и не могут использоваться напрямую.

 void UInventoryComponent::CreateStack(FSlotStructureamp; ContentToAdd) {  //TArraylt;FSlotStructuregt; Inventory;   int32 Index;   for (autoamp; SlotStructure : Inventory)  {  int32 NewIndex = Inventory.Find(SlotStructure, Index);   Inventory.Insert(ContentToAdd, NewIndex);  } }  

Комментарии:

1. Петля выглядит странно. Для каждого элемента, в Inventory который вы добавляете элемент Inventory ? Это нарочно?

2. Ошибка кажется вполне очевидной. Вы делаете find что-то , и чтобы найти что-то, вам нужно уметь сопоставлять это. Но если для типа не определен оператор сравнения равных, вы не можете увидеть, соответствует ли он, верно?

3. Точно, потому что в BP все работает, кроме инвентаризации. Поиск(Структура слота, индекс) сам по себе также выдает ошибку C2678. Верно, но что именно? Мне нужно найти индекс элемента в массиве и поместить его в переменную. Логично, что цикл делает это. Но что и с чем следует сравнивать в конце концов?

4. Это FSlotStructure встроенный, он создан BP или это ваше собственное творение?

5. Владеть в BP и в c

Ответ №1:

Все было решено, по крайней мере, код компилируется без ошибок. Все, что мне нужно было сделать, это добавить его в структуру FSLOT

 operator bool() const {  return true;  }