Видимо я где то пропустил кусок мануала, что бы сравнить блупринтовый элемент с его плюсовым родителем, при передачами между функциями нужно использовать TSubclassOf, потом кастить его к нужному классу и после этого сравнивать. Для меня работает следующим образом
GetAmmoFromInventory(CurrentAmmo.AmmoType, Qt);
void ANCGRangeWeapon::GetAmmoFromInventory(TSubclassOf<ANCGAmmo> ItemType, int32& AmmoCount) {
ANCGBaseCharacter* CharOwner = Cast<ANCGBaseCharacter>(this->GetOwner());
CharOwner->StorageComponent->GetAmmoByType(ItemType, AmmoCount);
}
void UNCGStorageComponent::GetAmmoByType_Implementation(TSubclassOf<ANCGAmmo> ItemToSearch, int32& Quantity)
{
if (ItemToSearch == nullptr) {
Quantity = 0;
return;
}
const auto Item = Cast<ANCGBaseItem>(ItemToSearch->GetDefaultObject());
for (ANCGBaseItem* CurrentItem : StorageItems)
{
if (CurrentItem->GetClass() == Item->GetClass()) {
Quantity = CurrentItem->Count;
}
}
}