ポインターの処理の仕方が悪くてエラーが出る

下のようにプログラムを書いたのですが、CPPに書いたような書き方をすると、「C4238 非標準の拡張機能が使用されています: 右辺値のクラスが左辺値に使用されます。」というエラーが出てしまいます。
よい書き方が思いつかないので、ご教授のほどよろしくお願いいたします。

ヘッダー


UCLASS()
class MYPROJECT_API Utest_s : public UObject
{
    GENERATED_BODY()
public:
    Utest_s();
    Utest_s(int x);
    ~Utest_s();
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Simulation")
    int x;
};
UCLASS()
class MYPROJECT_API Utest : public UObject
{
    GENERATED_BODY()
public:
    Utest();
    ~Utest();
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Simulation")
    TArray<Utest_s *> x;
    UFUNCTION(BlueprintCallable, Category = "Simulation")
    void run();
};
UCLASS(Blueprintable , BlueprintType)
class AMyGameMode : public AGameModeBase
{
    GENERATED_BODY()
public:
    AMyGameMode();
    virtual void BeginPlay() override;
    virtual void Tick(float DeltaTime) override;
    Utest *s;
    UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Simulation")
    int32 aa;
};

CPPファイル


this->plant_types.Add(&Utest_s(100));

差し障りがなければCPPファイルの内容はもう少し前後が分かるようにしていただくと回答しやすくなるかと思います

まず、そのコードには2つの問題があります。

  1. 一時オブジェクトのアドレスを保持しようとしている

    これは言語レベルで普通にNGなコードです。

    実体が無くなるのに、そのアドレスを保持するのはおかしいですよね?
  2. UObject 派生のクラスはUE4ではそのまま実体化できず、NewObject()を使用する

    Unreal Engine Unreal でのオブジェクトの作成 | Unreal Engine 5.1 ドキュメント

    上記に公式ドキュメントがあります。

実は質問する前に、NewObject()見つけてたのですが、よくよく考えたら、コメントアウト文のように、わざわざUtest_sクラスのコンストラクタを強引にポインタ型にしたものを渡してました。
ありがとうございます。解決しました。


UCLASS()
class MYPROJECT5_API Utest_s : public UObject
{
	GENERATED_BODY()
public:
	Utest_s() { this->x = 100; };
	Utest_s(int x) { this->x = x; };
	~Utest_s() {};
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Simulation")
	int x;
};
UCLASS()
class MYPROJECT5_API Utest : public UObject
{
	GENERATED_BODY()
public:
	Utest() {};
	~Utest() {};
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Simulation")
		TArray x;
	UFUNCTION(BlueprintCallable, Category = "Simulation")
		void run() {
			//this->x.Add(&Utest_s(10));
			Utest_s *a = NewObject();
			a->x = 10;
			//  これはできない。あきらめてセッター作るべき
			//a = &Utest_s(10);
			this->x.Add(a);
		};
};

解決したようで良かったです。

コードのイメージも大枠は問題ないかと思います。



Utest_sクラスのコンストラクタを強引にポインタ型にした
C++erとしてこの解釈は良くないので、手すきの際にでも以下のリンクを読んでみてください。

右辺値参照・ムーブセマンティクス - cpprefjp C++日本語リファレンス

きっと理解が深まると思います。

今のところ下さったリンクがあまり理解できませんが、頑張ります!