Missing ',' in Variable declaration specifier

my complier is telling me Missing ‘,’ in Variable declaration specifier but my intellisense is not catching anything then when I click on my message log to see the problem it just takes me to the .h file doesn’t show me no problems

 .h file
#include "GameFramework/Actor.h"
#include "pickup.generated.h"

UCLASS()
class MYFIRSTGAME_API Apickup : public AActor
{
	GENERATED_BODY()



public:
	UPROPERTY(visibledefaultsonly, blueprintreadwrite, category = ammo crate)
		int32 count;
	UPROPERTY(visibledefaultsonly, blueprintreadwrite, category = ammo crate)
		USphereComponent*touchsphere;

	UPROPERTY(visibledefaultsonly, blueprintreadwrite, category = ammo crate)
		UStaticMeshComponent*staticmesh;

		
public:	
	// Sets default values for this actor's properties
	Apickup();


protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

	UFUNCTION()
		void onpickup (UPrimitiveComponent* OverlappedComp, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);


public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	
public:
	UPROPERTY(editanywhere)
	USceneComponent*pickuproot;



};




.cpp file
#include "Myfirstgame.h"
#include "pickup.h"
#include "MyfirstgameCharacter.h"


// Sets default values
Apickup::Apickup()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

	staticmesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("pickupmesh"));
	staticmesh->AttachToComponent(pickuproot, FAttachmentTransformRules::SnapToTargetIncludingScale);


     touchsphere = CreateDefaultSubobject<USphereComponent>(TEXT("touchsphere"));

	 pickuproot = CreateAbstractDefaultSubobject<USceneComponent>(TEXT("pickuproot"));
	 RootComponent = pickuproot;

	 
	 count = 30;

	 touchsphere->SetWorldScale3D(FVector(1.f, 1.f, 1.f));
	 touchsphere->bGenerateOverlapEvents = true;
	 touchsphere->OnComponentBeginOverlap.AddDynamic(this, &Apickup::onpickup);
	 touchsphere->AttachToComponent(pickuproot, FAttachmentTransformRules::SnapToTargetIncludingScale);	 
}




// Called when the game starts or when spawned
void Apickup::BeginPlay()
{
	Super::BeginPlay();
	
}

void Apickup::onpickup(UPrimitiveComponent * OverlappedComp, AActor * OtherActor, UPrimitiveComponent * OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
{
	AMyfirstgameCharacter* character = Cast<AMyfirstgameCharacter>(OtherActor);

	if (character)
	{
		character->ammopool = character->ammopool + count;

		this->Destroy();
	}

}



// Called every frame
void Apickup::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

Do(es) the error message(s) give you a line number?

At a quick glance, I’d try putting quotes around “ammo crate”, it could be failing to parse past the space.

yes that did the trick

yes that did the trick thank you