Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 UE4 function 'create implementation' is not workin
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

Xandr0s
Starting Member

Pakistan
1 Posts

Posted - Nov 08 2019 :  07:26:58 AM  Show Profile  Reply with Quote
Hi, I get 'UFunction is already fully implemented' error when trying to create implementation from header files. It was working earlier, started getting link errors, removed intermediates, regenerated visual studio files, and viola. Create Implementation is not working anymore.

It needs to generate func_Implementation() implementation for BlueprintImplementatbleEvent tag




feline
Whole Tomato Software

United Kingdom
16148 Posts

Posted - Nov 08 2019 :  3:23:52 PM  Show Profile  Reply with Quote
Thank you for the clear example, I am seeing the same problem here:

case=141477

Does it actually make sense to have an implementation for functions marked with "BlueprintImplementableEvent"? Or does it depend on the other parameters that are passed to UFUNCTION?

zen is the art of being at one with the two'ness
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
16148 Posts

Posted - Nov 11 2019 :  10:22:57 AM  Show Profile  Reply with Quote
I agree that VA is doing something wrong here, but I am not sure what VA should be going on here.

Using VS2017 and Unreal Engine 4.22.3 I have created a simple Flying game, and added a C++ Actor class to the game. I have added these functions to the class, and then tried various combinations, to see what will and will not compile. For me, neither function will compile when given either a normal function body, or an _Implementation() function body.

The full code that I have ended up with, with comments explaining what I am seeing, is this:

UCLASS()
class FLYING_4_22_3_API AFelineActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AFelineActor();
	
protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;
	
public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	// no body, compiles just fine
	UFUNCTION(BlueprintImplementableEvent)
	void OkaySoThisWorks();
	
	// this does NOT compile, because the function already has a body
	UFUNCTION(BlueprintImplementableEvent)
	void OkaySoThisWorksInline() { int nLocalOne = 2; }
	
	UFUNCTION(BlueprintImplementableEvent)
	void OkaySoThisWorksRenamed();
	
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "TimeManager")
	void ButWhyWontThisWork();
	
	// this does NOT compile, because the function already has a body
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "TimeManager")
	void ButWhyWontThisWorkInline() { int nLocalThree = 2; }
	
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "TimeManager")
	void ButWhyWontThisWorkRenamed();
};

// this does NOT compile, this is not a member of the class
void AFelineActor::OkaySoThisWorksRenamed_Implementation() { int nLocalTwo = 2; }

// this does NOT compile, this is not a member of the class
void AFelineActor::ButWhyWontThisWorkRenamed_Implementation() { int nLocalFour = 2; }


which makes a degree of sense, given what this page says about BlueprintImplementableEvent, which is that "The function can be implemented in a Blueprint or Level Blueprint graph."

https://docs.unrealengine.com/en-US/Programming/UnrealArchitecture/Reference/Functions/Specifiers/index.html

zen is the art of being at one with the two'ness
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2019 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000