My class which extends actor does not have components?

Hey guys.

I have created a class extending actor with the following code.
H file
#pragma once

#include "GameFramework/Actor.h"
#include "Building.generated.h"

/**
 * 
 */
UCLASS()
class ABuilding : public AActor
{
	GENERATED_UCLASS_BODY()

	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = StaticMeshAssets)
	UStaticMesh* AssetSM_PlayerStart;

};

C++ file

#include "DaGame2.h"
#include "Building.h"

ABuilding::ABuilding(const class FPostConstructInitializeProperties& PCIP)
	: Super(PCIP)
{
	static ConstructorHelpers::FObjectFinder<UStaticMesh> StaticMeshOb_torus(TEXT("StaticMesh'/Engine/EditorShapes/Meshes/Shape_Torus.Shape_Torus'"));
	if (StaticMeshOb_torus.Object)
		StaticMeshComponent->SetStaticMesh(StaticMeshOb_torus.Object);
}

Im getting the error error C2065: ‘StaticMeshComponent’ : undeclared identifier

Can any body tell me what im doing wrong i just want to add a static mesh to my actor.

Hi. You have to add static mesh component first.

UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = StaticMeshAssets)
TSubobjectPtr<UStaticMeshComponent> StaticMeshComponent;

Then in the constructor before you set static mesh:

StaticMeshComponent = PCIP.CreateDefaultSubobject<UStaticMeshComponent>(this, TEXT("StaticMesh"));

Also, avoid hard-coded assets references. Better create blueprint based on your class, set all required properties and then reference to blueprint generated class when needed.

But first read official documentation and check available samples source code. Starting point should be actually “Crash course into programming”.