There is no default constructor in ANavModifierVolume
ANavModifierVolume.h
class NAVIGATIONSYSTEM_API ANavModifierVolume : public AVolume, public INavRelevantInterface
{
GENERATED_BODY()
public:
ANavModifierVolume(const FObjectInitializer& ObjectInitializer);
}
ANavModifierVolume.cpp
ANavModifierVolume::ANavModifierVolume(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer), AreaClass(UNavArea_Null::StaticClass())
{
//Some code
}
And if I create a subclass of ANavModifierVolume
APathModifierVolume.h
class MYGAME_API APathModifierVolume: public ANavModifierVolume
{
GENERATED_BODY()
public:
APathModifierVolume();
explicit APathModifierVolume(const FObjectInitializer& ObjectInitializer);
}
APathModifierVolume.cpp
APathModifierVolume::APathModifierVolume()
{
}
APathModifierVolume::APathModifierVolume(const FObjectInitializer& ObjectInitializer)
:Super(ObjectInitializer)
{
}
And then I got errors.
error C2512: 'ANavModifierVolume': no appropriate default constructor available.
note: no constructor could take the source type or constructor overload resolution was ambiguous
If I remove the default constructor, everything works fine. But why? Why should I use FObjectInitializer constructor? And If I wanna use the default constructor, what should I do?