That code is part of a class of mine, it’s editable in the defaults and seems to do what I want it to do.
Now to the problem:
UMyClass* GetMyObject(int32 index) {
if (index > -1 || index < LENGTH)
return myobjects[index];
return NULL;
}
The compiler tells me that there is no way to cast from TSubclassOf~UMyClass~ to MyClass*. I have looked into the definition of TSubclassOf and there is an operator that should be able to do that. MyClass extends UObject. (~ used instead of greater and smaller than)
TSubclassOf<> means ‘a class (UClass) which is a sub-class of the specified type’. So essentially it is a UClass pointer that represents a type derived from the template type (and not an instance of that class). I hope this makes sense.
The objects in your “myobjects” are of type TSubclassOf, whereas you’re trying to return a pointer to an instance of UMyClass. If you’re looking to just access the items in myobject, you will have to change the return type of the function to TSubclassOf. If you are looking for a pointer to an instance of UMyClass, you will need to create one first and then return that.
Yeah, I’ve attached objects of that class to the array in the defaults of my object but how can I get a pointer to them? As I understood TSubclassOf it is a changable reference or pointer to an object that is or extends the given class.