-2
\$\begingroup\$

Other errors I got when compiling:

  • No instance of ADD_INTERNAL_DYNAMIC matches the argument list

  • DECLARE_DYNAMIC_MULTICAST_DELEGATE_Threeparams Marco redefinition Note: See previous definition of DECLARE_DYNAMIC_MULTICAST_DELEGATE_Three params

XD.cpp:

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

#include "Test2.h"
#include "XD.h"

// Sets default values
AXD::AXD()
{
  // 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;

 newMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Static Mesh"));
 newBox = CreateDefaultSubobject<UBoxComponent>(TEXT("Collision Box"));
 newBox->OnComponentBeginOverlap.AddDynamic(this, onCollide);
}

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

}

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

}

XD.h

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

#pragma once

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

#define DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(UPrimitiveUPrimitiveComponent* a, AActor* b, UPrimitiveComponent c);

UCLASS()
class TEST2_API AXD : public AActor
{
    GENERATED_BODY()

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

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

public: 
    // Called every frame
    virtual void Tick(float DeltaTime) override;
    UPROPERTY(EditAnywhere)
    UStaticMeshComponent* newMesh;

    UPROPERTY(EditAnywhere)
    UBoxComponent* newBox;

    UFUNCTION()
    void onCollide(class UPrimitiveComponent* a, class AActor* b, class UPrimitiveComponent* c)
    {
        Destroy();
    }

};
\$\endgroup\$
3
  • \$\begingroup\$ And google didn't help you? \$\endgroup\$
    – Vaillancourt
    Apr 3 '17 at 1:12
  • \$\begingroup\$ No, it didn't... \$\endgroup\$
    – Aaron
    Apr 3 '17 at 1:31
  • 1
    \$\begingroup\$ If you really want help with compiler errors, you should copy the exact compiler error description, along with the line where the compiler error occurred. Without it, we'll just be guessing. \$\endgroup\$
    – Vaillancourt
    Apr 3 '17 at 2:16
1
\$\begingroup\$

In the #define:

This is wrong:

UPrimitiveUPrimitiveComponent* a

This should be a pointer:

UPrimitiveComponent c
\$\endgroup\$
0
0
\$\begingroup\$

The Input to bind a delegate should be a Class instance and a Pointer to method method. The method should also be marked as UFUNCTION.

So the code should look like this:

newBox->OnComponentBeginOverlap.AddDynamic(this, &AXD::onCollide);
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.