[SOLVED]C++ Interface not recognized as defined

I have an interface I’m trying to implement in my current project, and I’ve run into a problem. On trying to compile, I get this list of errors:

Here is the interface .h:

#pragma once
#include "Object.h"
#include "Inventory.h"
#include "BasePickup.h"
#include "InventoryI.generated.h"

UINTERFACE(MinimalAPI)
class UInventoryI : public UInterface
{
	GENERATED_UINTERFACE_BODY()	
};

class IInventoryI
{
	GENERATED_IINTERFACE_BODY()

public:
	virtual void StartSelection() = 0;
	virtual void EndSelection() = 0;
	virtual void OnTaken(UInventory* Inventory) = 0;
	virtual void OnItemSelected(ABasePickup* Item) = 0;
	virtual void DropItem(ABasePickup* Item, uint32 Amount = 0) = 0;
};

Here is the interface .cpp:

#include "OccultaMundi.h"
#include "InventoryI.h"

UInventoryI::UInventoryI(const class FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
{

}

And here is the .h for the class where I’m implementing the interface:

#include "Components/ActorComponent.h"
#include "BasePickup.h"
#include "Inventory.generated.h"


UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class OCCULTAMUNDI_API UInventory : public UActorComponent, public IInventoryI
{
	GENERATED_BODY()

public:	
	// Sets default values for this component's properties
	UInventory();

	// Called when the game starts
	virtual void BeginPlay() override;
	
	// Called every frame
	virtual void TickComponent( float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction ) override;

	// Add to the inventory
	void AddToInventory(FInventoryItem* Item);

	// Remove from the inventory
	void RemoveFromInventory(FInventoryItem* Item);

	virtual void StartSelection() override;
	virtual void EndSelection() override;
	virtual void OnTaken(UInventory* Inventory) override;
	virtual void OnItemSelected(ABasePickup* Item) override;
	virtual void DropItem(ABasePickup* Item, uint32 Amount = 0) override;	

private:

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Inventory, meta = (AllowPrivateAccess = "true"))
	TArray<FInventoryItem> InventoryItems;
};

I’ve tried everything I can think of to fix this, and I can’t find an existing question here that addresses this. Any ideas?

UInterfaces may have pure virtual functions in the second class in Unreal C++.

This isn’t a matter of how my functions are declared. Unreal isn’t letting my other class use the interface at all because it isn’t recognized as being defined at all.

AFAIK you can’t declare pure virtual methods in UE4 classes. Add empty definitions to your interface methods.

I see it now: you forgot to #include your InventoryI interface