Use C++ class as type for other C++ class

Hello, I am a newbie in C++ and UE4.
So i’m trying to make multidimentional array as class to be used in blueprint

Here i have the MultiArrayRow.h

#pragma once

#include "Object.h"
#include "MultiArrayRow.generated.h"

UCLASS(BlueprintType)
class TESTTURNBASE_API UMultiArrayRow : public UObject
{
		GENERATED_BODY()

		UPROPERTY(EditAnywhere)
		TArray< TSubclassOf<AActor> > Columns;

		UFUNCTION(BlueprintCallable, Category = "CustomFunctions")
		void AddNewColumn()
		{
			Columns.Add(NULL);
		}
	
		UMultiArrayRow(const FObjectInitializer& ObjectInitializer);
	
};

and now I’m trying to make the whole class

MultiArray.h

#pragma once

#include "Object.h"
#include "MultiArray.generated.h"

UCLASS(BlueprintType)
class TESTTURNBASE_API UMultiArray : public UObject
{
	GENERATED_BODY()
	
	UPROPERTY(EditAnywhere)
	TArray< UMultiArrayRow* > Columns; //here UMultiArrayRow is undefined
	
};

So as you can see the “UMultiArrowRow” is undefined, and when I tried to put #include “UMultiArrowRow.h”, it showed error in UCLASS().

So my question is how to properly use class as a type?

You can forward declare it with the keyword class in your .h (if you are only using pointers in the .h):

TArray< class UMultiArrayRow* > Columns;

Then put the #include “MultiArrowRow.h” (without the starting U) in your .cpp

Hello, thanks for the reply
I tried forward declare it but it still yield error when I build it in Visual Studio or maybe my Intellisense is wrong

But it is solved now, I can use #include MultiArrowRow.h if I compile it from UE4

Turns out it was my intellisense and maybe my VS2013 that giving errors
When I tried to compile it from UE4 it works perfectly if I use #include MultiArrowRow.h