使用覆盖失效器的方法不会使任何基类方法无效

时间:2016-11-16 16:34:47

标签: c++ unreal-engine4

我正在使用Visual Studio 2015 Enterprise学习虚幻引擎4.13.2和C ++。

我认为我的问题是C ++,所以我认为最好的问题就在这里。

我有一个继承自AActor类的C ++类。我必须覆盖AActor中的方法,所以我把它放在我的头文件中:

virtual void ReceiveHit(class UPrimitiveComponent* MyComp, class AActor* Other, class UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, const FHitResult& Hit);

我也在cpp文件中实现了。

但是我得到以下编译器错误:

  

MyActor.h(23):错误C3668:' MyActor :: ReceiveHit':方法   override invalidator没有使任何基类方法无效

我从AActor.h文件中复制了ReceiveHit方法,我收到了错误。

我还有其他方法被覆盖而没有问题。这是MyActor头文件:

#pragma once

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

UCLASS()
class MYGAME_API AMyActor : public AActor
{
    GENERATED_BODY()

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

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

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

    virtual void ReceiveHit(class UPrimitiveComponent* MyComp, AActor* Other, class UPrimitiveComponent* OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, const FHitResult& Hit) override;

private:
    UProjectileMovementComponent* MyMovement;
};

如何解决此错误?

1 个答案:

答案 0 :(得分:0)

问题是这不是虚拟方法。他们已经改变了API,我跟着一个老例子。

不,我可以使用虚拟的NotifyHit,我可以覆盖它:

virtual void NotifyHit
(
    class UPrimitiveComponent * MyComp,
    AActor * Other,
    class UPrimitiveComponent * OtherComp,
    bool bSelfMoved,
    FVector HitLocation,
    FVector HitNormal,
    FVector NormalImpulse,
    const FHitResult & Hit
)