Unreal C++ Error: Error C2248: 'Uprimitivecomponent: :bGenerateOverlapEvents': Cannot Access Private Member Declared in Class 'Uprimitivecomponent'

I am very new with C++ and Unreal Engine 4.

I am creating a pickup script with a box collider and I have an annyoning error with my pick up script. error C2248: 'UPrimitiveComponent::bGenerateOverlapEvents': cannot access private member declared in class 'UPrimitiveComponent':

I am really trying to fix this one but I cant find the fix what I need!

Here is my header code:

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Pickup.generated.h"

UCLASS()
class XAVIER_CPP_TUT_API APickup : public AActor
{
    GENERATED_BODY()
    
public:
    // Sets default values for this actor's properties
    APickup();

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

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


//*********************************************

UPROPERTY(EditAnywhere)
    USceneComponent* PickupRoot;

//The static mesh for the pick up
UPROPERTY(EditAnywhere)
    UStaticMeshComponent* PickupMesh;

UPROPERTY(EditAnywhere)
    UShapeComponent* PickupBox;

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

};

Here is my .cpp code:

// Fill out your copyright notice in the Description page of Project Settings.

#include "Pickup.h"
#include "Classes/Components/ShapeComponent.h"
#include "Classes/Components/BoxComponent.h"
#include "Components/StaticMeshComponent.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;

#pragma region Declaratie_Variabelen
    PickupRoot = CreateDefaultSubobject<USceneComponent>(TEXT("PickupRoot"));
    RootComponent = PickupRoot;

    PickupMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("PickupMesh"));
    PickupMesh->AttachToComponent(PickupRoot, FAttachmentTransformRules::SnapToTargetNotIncludingScale);

    // * Maak een Colliderbox -->
    PickupBox = CreateDefaultSubobject<UBoxComponent>(TEXT("PickupBox"));
    PickupBox->SetWorldScale3D(FVector(1.0f, 1.0f, 1.0f));
    PickupBox->bGenerateOverlapEvents = true;
    PickupBox->OnComponentBeginOverlap.AddDynamic(this, &APickup::OnPlayerEnterPickupBox);
    PickupBox->AttachToComponent(PickupRoot, FAttachmentTransformRules::SnapToTargetNotIncludingScale);
    // <-- Maak een Colliderbox *

#pragma endregion Declaratie_Variabelen
}

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

}

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

}

#pragma region Custom Functions
void APickup::OnPlayerEnterPickupBox(UPrimitiveComponent * OverlappedComp, AActor * OtherActor, UPrimitiveComponent * otherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult & SweepResult)
{
    Destroy();
}

#pragma endregion Custom Functions

1 Answer

Try PickupBox->SetGenerateOverlapEvents(true); instead of PickupBox->bGenerateOverlapEvents = true;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Chloe Bennett

Chloe Bennett

Culture, Media & Entertainment Columnist

Chloe Bennett explores the intersection of pop culture, streaming entertainment, digital trends, and contemporary lifestyle. Her weekly commentary reaches thousands of culture enthusiasts.

Share this article
Twitter Facebook Pinterest