How does Blueprint Function implement virtual inheritance?

How does Blueprint Function implement virtual inheritance?

LogCompile: Error: UpdateInfoToDB: Override of UFUNCTION in parent class (YTJBaseActor) cannot have a UFUNCTION() declaration above it; it will use the same parameters as the original declaration

UCLASS()
class UE_VDT_API AYTJBaseActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AYTJBaseActor();
	UFUNCTION(BlueprintImplementableEvent,Category = "ActorDBFunction")
		virtual bool UpdateInfoToDB();
	UFUNCTION(BlueprintImplementableEvent, Category = "ActorDBFunction")
		virtual bool InsertInfoToDB();
	UFUNCTION(BlueprintImplementableEvent, Category = "ActorDBFunction")
		virtual bool DeleteInfoFromDB();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

};
UCLASS()
class UE_VDT_API AYTJFixedPointBrowseActor : public AYTJBaseActor
{
	GENERATED_BODY()
public:
	AYTJFixedPointBrowseActor();
	UFUNCTION(BlueprintNativeEvent, Category = "ActorDBFunction")
		virtual bool UpdateInfoToDB();
	UFUNCTION(BlueprintNativeEvent, Category = "ActorDBFunction")
		virtual bool InsertInfoToDB();
	UFUNCTION(BlueprintNativeEvent, Category = "ActorDBFunction")
		virtual bool DeleteInfoFromDB();
protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
public:
	// Called every frame
	virtual void Tick(float DeltaTime) override;
};

The error is telling you in the child class, the UFUNCTION() above the overridden functions will be ignored, and the parameters from the parent class will be used.

You just need to remove the UFUNCTION() part over the function declaration in the child class.

BlueprintImplementableEvent specifier means the function should be implemented in blueprint subclasses only, C++ base class and children are not supposed to provide an implementation. You are not even supposed to declare it virtual in the base class. I’m surprised you are not getting an error regarding this.

If you want to be able to override method in both C++ subclasses and blueprint subclasses alike, use BlueprintNativeEvent (in the base class) instead. For C++ override you must then use the _Implementation suffix, eg :

UCLASS()
class UE_VDT_API AYTJFixedPointBrowseActor : public AYTJBaseActor
{
    //...
    virtual bool UpdateInfoToDB_Implementation() override;
}