Я создал класс в Unreal под названием Groundmode.
GroundMode.h: #pragma один раз
#include "CoreMinimal.h"
#include "UObject/NoExportTypes.h"
#include "Components/BoxComponent.h"
#include <NMR\GroundDirection.h>
#include "GroundMode.generated.h"
UCLASS()
class NMR_API UGroundMode : public UObject
{
GENERATED_BODY()
public:
UGroundMode();
};
GroundMode.cpp:
#include "GroundMode.h"
UGroundMode::UGroundMode() {}
Я хочу иметь возможность создать экземпляр этого класса в другом классе. PlayerPhysicsCollisionInfo.h
#include "CoreMinimal.h"
#include "Components/ActorComponent.h"
#include "GroundMode.h"
#include "PlayerPhysicsCollisionInfo.generated.h"
UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) )
class NMR_API UPlayerPhysicsCollisionInfo : public UActorComponent
{
GENERATED_BODY()
public:
UPlayerPhysicsCollisionInfo();
UGroundMode downMode;
UGroundMode upMode;
UGroundMode leftMode;
UGroundMode rightMode;
};
PlayerPhysicsCollisionInfo.cpp: #include "PlayerPhysicsCollisionInfo.h"
void UPlayerPhysicsCollisionInfo::BeginPlay()
{
Super::BeginPlay();
downMode = new UGroundMode();
upMode = new UGroundMode();
leftMode = new UGroundMode();
rightMode = new UGroundMode();
}
Когда я пытаюсь создать экземпляры UGroundMode с новым ключевым словом, я получаю следующую ошибку компиляции: D:\Documents\Unreal Projects\NMR\Source\NMR\PlayerPhysicsCollisionInfo.cpp(25): ошибка C2661: 'UGroundMode::operator new' : ни одна перегруженная функция не принимает 1 аргумент
Что я делаю не так? Конструктор не принимает аргументов кроме 1.
new
UObjects и не храните их нигде по значению. Пожалуйста, начните с некоторых базовых руководств по UE C++. - person Rotem   schedule 23.05.2020