Cannot expose a UObject to blueprint

Sorry if the title is unclear.

I created a C++ class inheriting from UObject, called AttachmentBase. I then created another C++ class inheriting from AttachmentBase, and called this SightAttachment. I have then created a blueprint class inheriting from SightAttachment (after adding Blueprintable and BlueprintType to the UCLASS() specifier as seen below), and called this blueprint class PrototypeScope.

UClass specifier:

UCLASS(Blueprintable, BlueprintType)
class FPSGAME_API USightAttachment : public UAttachmentBase
{
	GENERATED_BODY()
(properties)
};

I then created a struct in another actor’s file, exposed to blueprints, and have a field for entering a USightAttachment class (as I plan to have more types of USightAttachment, extended with blueprints)

USTRUCT(BlueprintType)
struct FWeaponAttachmentsStruct
{

	GENERATED_BODY()

public:
	//Sight attachment
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Weapon Attachments")
		USightAttachment* SightAttachment;

};

I included the header file.
However, when I try to edit the USightAttachment field in blueprints, no entries appear:
image

I want my SightAttachment blueprint (PrototypeSight) to appear here, so I can select it. Please could someone help me?

Thank you

I should add that, when I replace USightAttachment* with UObject*, all blueprints, including the prototypeSight, are able to be selected.

Try changing USightAttachment parent class to USceneComponent (if you need a transform) or UActorComponent if its transform doesn’t matter.

Thanks for the reply.
My initial approach before relying on UObject was to make SightAttachment a child of UActorComponent, but then in the struct, the field USightAttachment* SightAttachment would not show anything in blueprint (it was like the blueprint picture I sent before, but just had no input at all under attachments, not even a box saying none). It still worked fine when the type was UObject* or AActor* but not USightAttachment*, so I tried UObject instead (and here we are now).

You could try expanding the uproperty to:

UPROPERTY(BlueprintReadWrite, editanywhere, meta=(AllowPrivateAccess = “true”))

Do you have any instances of based on the struct in your content browser to choose from?

This didn’t work, sorry.

For the last question, could you please clarify? I don’t think I understand.