我正在使用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;
};
如何解决此错误?
答案 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
)