In case someone still googling it, I had the same problem in ue 5.2.
I made a AI Controller from blueprints inherit from a C++ AI Controller class, and I didn’t get any compilation errors. After a lot of internet research, I tried to set C++ OnPossess and OnBeginPlay overrites as UFunction types, which finally gave me some compilation errors: it said I was trying to declare those functions twice.
The solution: I first removed the UFunction from the code, then removed the AI Controller blueprint and made my AI Paper Character blueprint to access the C++ AI Controller class directly. I had to move all visual coding to C++, but thankfully I was only executing the behavior tree in blueprints so far.
Describing the problem it self further: it was strage, because I could create the classes from the editor and use all functions normally, it would only bug when I closed the editor and openned it again. I could copy and then remove all the coding into a new C++ class and my AI would work correctly; it would only affect me after opening the editor with the code implemented and the blueprint class inheriting from it.
My thoughts are that unreal engine visual studio debugging was insufficient, precarious. But to not having the UFunction before my function declaration in C++ was like to not let it know it was being implemented on the blueprints.