How to pass pointers through delegates?

My Code:
class AProjectileLauncher;
UENUM()
enum class EWeaponFiringStatus : uint8
{
ReadyToFire,
Reloading,
NoAmmo,
DisabledByEMP,
};
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FProjectileLauncher, AProjectileLauncher*, WeaponToBeDestroyed);
UCLASS(Blueprintable)
class SPACECOMBATANTS_API AProjectileLauncher : public AActor

The error:
CompilerResultsLog:Error: Error D:/Unreal Projects/SpaceCombatants/Source/SpaceCombatants/ProjectileLauncher.h(18) : Error: Inappropriate ‘*’ on variable of type ‘AProjectileLauncher’, cannot have an exposed pointer to this type.

I don’t have access to the engine right now, but have you tried passing a TWeakPtr<AProjectileLauncher> instead? That might work.

I have never used TWeakPtr before. I guess I implemented it right:

This is the error I got : CompilerResultsLog:Error: Error D:/Unreal Projects/SpaceCombatants/Source/SpaceCombatants/ProjectileLauncher.h(18) : Error: Unrecognized type ‘TWeakPtr’ - type must be a UCLASS, USTRUCT or UENUM

Interestingly, UObject* works:
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FProjectileLauncher, UObject*, WeaponToBeDestroyed);

For those who are wondering, the way to go about is UObject*