栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

UE4

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

UE4

1.共享引用是一直有效的 ,不能设置为NULL
2.共享引用必须使用效的对象进行初始化,
3.创建的时候必须初始化
4.共享引用是非常安全的,它不会突然间被置能NULL,它不可能被能NULL

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TaskActor.generated.h"

class TaskA
{
public:
	int32 a;
	

};

UCLASS()
class SLATEPROJECT_API ATaskActor : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ATaskActor();

	void TaskTSharedPtr();

	void TaskTSharedRef();

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

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	TSharedPtr Task_a;
	
	//TSharedRef Task_b;//这种做法是错误的 无法编译通过的
};
void ATaskActor::TaskTSharedPtr()
{
	Task_a = MakeShareable(new TaskA());

	if (Task_a.IsValid()|| Task_a.Get())
	{
		Task_a->a;
		Task_a.Get()->a;

		Task_a.Reset();
	}
}
void ATaskActor::TaskTSharedRef()
{
	TSharedRef Task_b(new TaskA());

	Task_b->a;
	(*Task_b).a;
}

 void ATaskActor::TaskTSharedRefAndPtr()
{
	 TSharedRef Task_b(new TaskA());

	

	 Task_a = Task_b;//共享引用转换成共享指针 是隐式转换

	 TaskA* NewTaskA = new TaskA();
	 Task_a = MakeShareable(NewTaskA);//普通指针转换成共享指针

	 Task_b = Task_a.ToSharedRef();//共享指针转换成共享引用是不安全的,一旦对象为空就会触发断言导致程序崩溃
	//
	// // NOTE: The following is an Unreal extension to standard shared_ptr behavior
	// FORCEINLINE TSharedRef< ObjectType, Mode > ToSharedRef() const
	// {
	//	 // If this assert goes off, it means a shared reference was created from a shared pointer that was nullptr.
	//	 // Shared references are never allowed to be null.  Consider using TSharedPtr instead.
	//	 check(IsValid());
	//	 return TSharedRef< ObjectType, Mode >(*this);
	// }
	
	// Task_b = nullptr;//这个是错误的不能设置为nullptr

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934237.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号