How to declare a property that accepts an actor layer reference?

I need to pass a layer reference to my ActorComponent script, I can pass a layer name but it’s a weak link so I want to pass a reference/pointer. I’ve tried this variant:

#pragma once

#include "CoreMinimal.h"
#include "Layers/Layer.h"
#include "Components/ActorComponent.h"
#include "PlanetGravityActorComponent.generated.h"

UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class JELLIANS_API UPlanetGravityActorComponent : public UActorComponent
    float gravity = 10.0f;
    ULayer *layer;

    // Sets default values for this component's properties

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

    // Called every frame
    virtual void TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;


However, it doesn’t work: I still can’t drag my layer into the script property in editor.

How to declare it correctly?

P.S. I am a beginner in UE.

Given that little information, I have to make some assumptions. Do you have a Class based on ULayer, eg a Blueprint or something? Which you want to drag-and-drop into the property show as “Layer” for the ActorComponent?

Then use:

TSubclassOf<ULayer> layer;

This way you can drag-and-drop anything that is based on ULayer Class. Blueprints made of ULayer are child classes, a new class that inherite everything from ULayer.