My class stores multidimensional data (multiple ComponentDataMap
s in a CacheMap
):
UPROPERTY()
TArray<TObjectPtr<UComponentDataMap>> CacheMap;
UCLASS()
class UComponentDataMap : public UObject
{
GENERATED_BODY()
public:
UPROPERTY()
TEnumAsByte<EComponentClassUE> ComponentType;
UPROPERTY()
TMap<int64, TObjectPtr<UObject>> ComponentDataMap;
};
And I am working on a reflected function that should find and return a ComponentDataMap
of this CacheMap
:
UFUNCTION(BlueprintCallable)
TMap<int64, UObject*>& GetMap(EComponentClassUE componentspecifier)
{
for (TObjectPtr<UComponentDataMap> entry : CacheMap) {
if (entry->ComponentType == componentspecifier) {
return entry->ComponentDataMap;
}
}
return EmptyComponentCacheMap;
}
And the compiler complains about:
Error C2440 : 'return': cannot convert from 'TMap<int64,TObjectPtr<UObject>,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<InKeyType,InValueType,false>>' to 'TMap<int64,UObject*,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<InKeyType,InValueType,false>> &'
0> with
0> [
0> InKeyType=int64,
0> InValueType=TObjectPtr<UObject>
0> ]
0> and
0> [
0> InKeyType=int64,
0> InValueType=UObject*
0> ]
How am I supposed to deal with this? Shouldn’t there be any kind of auto-conversion available?