I have overloaded operator:
FORCEINLINE FArchive& operator<<(FArchive &Ar, FMyJsonContainer& Data)
{
Ar << Data.MyString;
};
And now I try to use it:
if (Ar.IsLoading())
{
int32 ObjectNum;
Ar << ObjectNum;
for (int32 ObjIdx = 0; ObjIdx < ObjectNum; ObjIdx++)
{
FName KeyName;
Ar << KeyName;
FMyJsonContainer Data;
//Data << Ar;
ObjectMap.Add(KeyName, Data);
}
}
else if (Ar.IsSaving())
{
if (ObjectMap.Num() > 0)
{
int32 ObjectNum = ObjectMap.Num();
Ar << ObjectNum;
for (auto It = ObjectMap.CreateIterator(); It; ++It)
{
FName KeyName = FName(It.Key());
Ar << KeyName;
FMyJsonContainer Data = It.Value();
Ar << Data;
}
}
}
In Ar.IsLoading() block this operator doesn’t work. (while compiling code, there are errors indicated that proper overloaded operator cannot be found).
But it works in Ar.IsSaving() block.
What should I do to make it work in loading block ?