[C++] No Instance of function AddDynamic matches the argument list

MyActor.cpp
// Fill out your copyright notice in the Description page of Project Settings.

#include "MyProject.h"
#include "MyActor.h"


// Sets default values
AMyActor::AMyActor()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	MyMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MyMesh"));
	MyShape = CreateDefaultSubobject<UCapsuleComponent>(TEXT("MyShape"));
	MyShape->bGenerateOverlapEvents = true;
	MyShape->OnComponentBeginOverlap.AddDynamic(this, &AMyActor::OnEnter);
}

// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
	Super::BeginPlay();
	
}

// Called every frame
void AMyActor::Tick( float DeltaTime )
{
	Super::Tick( DeltaTime );

}
void AMyActor::OnEnter(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor)
{
	printf("Was that sexual harrasment!");
}

MyActor.h:
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include “GameFramework/Actor.h”
#include “MyActor.generated.h”

UCLASS()
class MYPROJECT_API AMyActor : public AActor
{
GENERATED_BODY()

public:
// Sets default values for this actor’s properties
AMyActor();

AMyActor();

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

// Called every frame
virtual void Tick( float DeltaSeconds ) override;

UPROPERTY(EditAnywhere)
UStaticMeshComponent* MyMesh;

UPROPERTY(EditAnywhere)
UCapsuleComponent* MyShape;

USceneComponent* newScene;

UFUNCTION()
void OnEnter(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor);

};

Try to bind the delegate in beginplay instead of the constructor, and by the way, printf(); may not print to the unreal console. try this: https://wiki.unrealengine.com/Logs,_Printing_Messages_To_Yourself_During_Runtime