I’m currently developing an algorithm in C++ for my game, and I am writing the code in an empty C++ (not actor, scene, etc).
Now I want to call the method in my Scene Component class (inherited from Scene Component), but it always says “A non-static member reference must be relative to a specific object”.
Let’s say my class is ABC, and my method is CheckABC().
So currently I’m calling the method in the Scene Component class through ABC::CheckABC(), which returned the aforementioned error message.
I found in the forum that we have to create a default subobject, but since that ABC class is an empty class, it would be nonsense to create a subobject from it, wouldn’t it?
This may sound dumb, I’m guessing you probably checked this first, but asking doesn’t hurt: did you make the method static? Meaning, if you really don’t want to create an object (though you may use a singleton architecture), did you specified your class’s methods as static?
No, I forgot to… And it works… Perhaps I got confused because when it happened last time in another case, I needed to create the default subobjects. Thanks for the help!!!
Create Default subobjects works for UE derived classes. Tbh I don’t quite know how it works, but I think it calls the initializer (AClass()) and automatically inserts the traditional FObjectInitializer variable so you don’t have to do it yourself.
Whenever you use the “::” sign in Cpp you are calling a static method.
Working with static classes in Unreal is a little confusing at first, but its great to avoid objects when not needed; you can fire Broadcast() events from static delegates and subscribe static functions to TimerManager using the method to create static bindings, I’ve found this possibility very very useful when I need to avoid creating UObjects.