Unable to bind delegate to '&ABasicTower::TriggerEnter' (function might not be marked as a UFUNCTION)

I was able to successfully bind a delegate to OnComponentBeginOverlap and OnComponentEndOverlap in a c++ class called BasicTower. The class seems to work without issues when spawned directly in the editor. However, I tried inheriting from the class with a blueprint (which I called BasicTower_BP), and this seems to be giving me the error message “Unable to bind delegate to ‘&ABasicTower::TriggerEnter’ (function might not be marked as a UFUNCTION).”

The breakpoint only triggers after placing a BasicTower_BP in the editor and hitting the play button. If I save the map, leave the editor, then return to the editor and hit play, the game seems to play without issue, but without the intended results either (projectiles shooting from the tower in the direction it is facing). This issue didn’t seem to start until after I also made a blueprint of the TowerProjectile class, which I called TowerProjectile_BP, but I am not sure if that is a coincidence.

Lastly, and I am not sure if this is related, but the BasicTower_BP was also triggering breakpoints initially when I tried to attach a UBoxComponent to a USphereComponent or vice versa. It wasn’t crucial that the tower have both for testing its ability to fire projectiles, so I commented out the UBoxComponent as a temporary workaround. BasicTower never had any issues with the UBoxComponent and USphereComponent though, so I thought it might be worth mentioning.

Here is the code where I bind the delegate functions (irrelevant code has been repaced with “…”):

ABasicTower::ABasicTower(const class FPostConstructInitializeProperties& PCIP)
        	: Super(PCIP)
{
    ...
	TowerRangeArea = PCIP.CreateDefaultSubobject<USphereComponent>(this, TEXT("Tower Range Area"));
	RootComponent = TowerRangeArea;
	TowerRangeArea->InitSphereRadius(ShotRange);
	TowerRangeArea->bGenerateOverlapEvents = true;
	TowerRangeArea->OnComponentBeginOverlap.AddDynamic(this, &ABasicTower::TriggerEnter);
	TowerRangeArea->OnComponentEndOverlap.AddDynamic(this, &ABasicTower::TriggerExit);

	/*Collision = PCIP.CreateDefaultSubobject<UBoxComponent>(this, TEXT("Collision"));
	Collision->AttachParent = TowerRangeArea;*/
    ...
}

And here is the code where I declare the delegate functions:

//methods for detecting when an enemy is within range of this tower
	UFUNCTION()
	void TriggerEnter(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult);
	UFUNCTION()
	void TriggerExit(class AActor* OtherActor, class UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);

Any idea what is going on here? Let me know if more code is necessary to diagnose the problem.

Update: BasicTower_BP also seems to work without causing a break if I try spawning it while in play mode and then stopping and pressing the play button again. Also this time I am primarily getting this error message: “C:\Users\andrew911\Desktop_UnrealEngine-4.3_\Engine\Source\Runtime\Engine\Private\SceneComponent.cpp(694): Ensure condition failed: false
Template Mismatch during attachment. Attaching instanced component to template component. Parent ‘Tower Range Area’ Self ‘SlotMesh_0’
UE4Editor.exe has triggered a breakpoint.”