自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(89)
  • 问答 (1)
  • 收藏
  • 关注

原创 虚幻反射-

来遍历特定类的属性。在Unreal Engine中,如果你想获取一个。的实例,并执行所需的操作,例如获取属性名称或值。方法来获取属性值的指针,并进行相应的转换。对象还包含有关属性的元数据,这些可以通过。:首先,确保包含了反射相关的头文件。:在遍历过程中,你可以访问每个。方法将属性值导出为文本格式。模板类,你可以遍历一个。:如果需要,可以使用。

2024-08-17 09:52:54 648

原创 UE SessionFrontd(会话前端)源码解析

ISessionService表示一个会话的服务。/***/public:/***//***//***/public:RunStopIsRunning加上一个必备的虚析构函数。

2024-08-14 17:47:12 674

原创 UE C++ FUdpSender和FUdpReveiver

因为涉及到多线程访问数据,所以使用TSharedRef和TSharedPtr的线程安全版本。另外使用 IPv4Endpoint记录了一个要发送的目标socket地址。使用OnDataReceived返回一个可接受两个参数的单播委托。通过对这个委托进行绑定,可完成对接受数据的处理。可以看见FUdpSender使用了多线程+消息队列来处理要发送的消息。第一个参数是收到到的数据,第二个参数是发送者的地址。每次要发送的数据被封装成了一个包,如下结构。目的是为了保证线程安全。是一个typedef。

2024-08-09 15:38:14 322

原创 UE C++编程概览

​ 虚幻引擎中所有对象的基类都是UObject。而UCLASS宏的作用是标记UObject的子类, 以便处理系统可以识别它们。引擎能通过一些额外的操作来生成代码,实现反射等操作。大致定义方法如下。​ 如 MyProject 希望将 UMyObject 类公开到其他模块,则需要指定。

2024-08-09 14:49:38 674

原创 C++中如何自己封装一个Callable

有时候静态编译太不灵活,我们需要更灵活的运行时操作。又或真假设你在开发一个脚本,想注册本地的C++函数到脚本语言的标准库中。例如gdscript的Callable。下面是一个我的一个简单的实现。我们假设脚本语言中的变量类型是std::any。根据情况不同实现细节也可能不同。

2024-05-04 15:29:43 462

原创 QML QTP0001 not set 警告

这是从QT6.5开始的,旧的前缀被标记为废弃的。文档还说在使用qt_add_qml_module()不指定RESOURCE_PREFIX是新版的前缀,但是实际构建完后的项目好像不是这样。大概的意思是说现在':/qt/qml/' 这个前缀是QML模块资源文件的前缀,而之前是':/'还有一点要说的是,注意Main.qml的url,以便能够让引擎正确加载。使用QML的时候发现有这个警告。查阅资料之后发现解决办法。便利`:`文件夹后也可以看见的确做出了更改。cmake中这样些,就能指定新的前缀。

2023-10-24 20:11:36 816

原创 unique-ptr源码解析

std::unique_ptr源码解析

2022-10-05 21:52:03 1541 3

原创 万能引用和重载中的问题以及解决方案

总之,要不要使用如此晦涩复杂的特性,还是取决于程序员本身,你也可以使用const &快快乐乐的写代码,正因为你没有用到的东西,不应当给你增添任何负担,你用到的东西,没有什么比C++提供的更好了使用Modern C++也是你自己的选择,除非写库,很少有人能用到模板开发,真正把这些Modern C++特性用到生产环境的,并且用好的,我想都是在C++领域发光发热的大牛们吧。

2022-10-05 21:51:23 1804

原创 Rust通过Box方式实现LinkedList

Rust基于 Box+Option组织的链表

2022-10-05 21:50:32 1031

原创 type-traits源码分析-三

type-traits源码分析

2022-10-05 21:49:51 688

原创 type-traits源码分析-二-

type-traits源码分析

2022-10-05 21:48:48 543

原创 type-traits源码分析-一-

type-traits源码分析

2022-10-05 21:47:37 520

原创 const-container-s-iterator-is-const-iterator

const性质的容器返回的迭代器也是const_iterator

2022-10-05 21:46:24 227

原创 C++—— pass by value and use std::move

一个clang-tidy警告的解析

2022-09-02 08:27:05 1572

原创 Rust——关于Option详解

Option是组成Rust程序的基石,熟练使用Rust的Option可以帮助我们进行程序的开发。但是Option这里的知识和细节比较绕,说白了就是各种套娃,本篇文章意在梳理Option的一些细节。

2022-07-20 21:03:35 7186 1

原创 Rust——智能指针

Rust智能指针

2022-07-08 21:06:45 1883 1

原创 Rust——包管理

这篇文章将介绍Rust如何进行包管理。保姆级教程。

2022-07-05 01:08:13 3101

原创 C++——禁止对象产生在heap

有些类的对象我们并不希望在堆区开辟,就需要禁止对象在heap开辟的这样的手法。

2022-06-19 20:39:08 572

原创 归并排序最简单的写法——只需要不到15行

使用C++书写的不到15行的归并排序算法

2022-06-07 23:30:32 229

原创 C++——关于返回值优化问题

关于返回值优化的几个问题

2022-06-05 22:44:41 450

原创 C++11——完美转发

C++中转发的解释

2022-06-05 11:11:26 660

原创 模版编程中使用基类内部的名称

看effective C++条款43随手做的实践。#include <iostream>template <typename T>class InType{ private: T _val; public: InType(const T & val) : _val(val) { } T & val() //const 修饰的是this变为const this * const { retu

2022-05-17 23:23:40 195

原创 C++中关于私有继承向上转型的问题

对于public而言,将一个继承类对象转换为一个基类对象再正常不过,但是,对于private来说,编译器不允许隐式的转换,强制转换也有些许的约束。也就是说下面这样的代码并不可以#include <iostream>using namespace std;class A{ private: virtual void foo() { cout << "A::foo" << endl; } };class B :

2022-05-05 09:52:21 648

原创 C++——成员函数的限定

今天在逛知乎的时候看见了一个问题,原文链接如下请问C++标准库函数not_fn为什么要这么实现? - 知乎看了一个知乎答者的解释非静态成员函数参数列表后的修饰符是成员函数的限定,在类对象处于不同的值类别(const non-const const & const &&等)时会选择不同的函数调用。这个在学习C++的时候已经学习到了,但是没想到竟然还会有带引用的形式。我们看一下的代码和其运行结果class Integer{private: int .

2022-04-13 17:51:49 410

原创 C++——一些小知识(持续更新)

C++一些零散的知识

2022-04-01 21:30:50 680

原创 C++——模板(超详细的模板解析)

超详细的C++模板知识列表,持续维护。

2022-04-01 18:39:49 54066 7

原创 C——图书管理系统

Linux下的图书管理系统

2022-03-29 09:15:18 397

原创 C++——随机数引擎和分布

随机数引擎是一个函数对象类,他们定义了一个调用运算符,不接受任何参数并且返回一个unsigned整数

2022-03-22 11:58:51 4801 1

原创 LINXU——命令的使用

声明:本文章基于LINUX命令行大全,基本就是读书笔记什么是命令?终端中的命令不外乎以下几种可执行程序shell内置指令shell函数alias命令可执行程序很好理解对shell命令的解释——摘自网络Shell就是一个命令行解释器,它的作用就是遵循一定的语法将输入的命令加以解释并传给系统。它为用户提供了一个向Linux发送请求以便运行程序的接口系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序摘自百度百科在计算机科学中,Shell俗称壳

2022-03-21 16:47:27 1068

原创 C++——bitset

bitset——简单又方便的位运算工具

2022-03-17 14:16:22 11335 2

原创 C++——tuple类型

tuple类型的简单介绍

2022-03-14 17:53:32 4282

原创 离散数学——容斥原理

容斥原理的一些解析

2022-03-07 12:08:56 1786

原创 C——特殊的函数处理

C的一些泛型函数,可变参数函数等等

2022-02-27 15:26:30 395

原创 C/C++——预处理

宏,预处理,条件编译

2022-02-23 21:24:16 844

原创 关于C结构体的一些代码补充

#include <stdio.h>#include <stdlib.h>typedef struct two_string{ char * first; char * second;}ts;void getmem(ts * t, unsigned first_n, unsigned second_n){ t->first = (char *)malloc(sizeof(char) * first_n + 1); t->se.

2022-02-23 15:04:42 546

原创 C++——allocator类

new 在灵活性上有一些局限可以使用allocator类进行更加强大的内存操作用法allocator<T> value_name;.allocate(n) 分配原始的,未构造的保存n个T类型的空间返沪一个指针.consstruct(p,args) 构造对象,在p指向的内存中,args是构造类型所需要的参数.destory(p) p为 T 的指针,对其指向的对象进行析构操作.deallocate(p,n) 释放空间,从p指向开始后的n块内存空间,此指针必须是alloc

2022-02-14 12:13:16 2328

原创 C++——再探关联容器

对于之前博客关联容器的补充

2022-02-13 16:20:22 456

原创 C++——再探迭代器

迭代器类型插入迭代器流迭代器反向迭代器移动迭代器假设it是一个对应类型的迭代器插入迭代器it = t; 对应位置前插入一个元素*it, ++it, it++虽然都定义了,但是没有任何作用,全部返回原来it三种类型back_inserterfront_inserterinserter 返回一个迭代器类型,指向新添加的元素上面的迭代器分别对应push_back,push_front, insert。使用方法back_inserter,front_i

2022-02-12 20:55:44 301

原创 C++——参数绑定

一些STL算法要求我们使用一元函数,可是有些函数却不是一元的,C++提供了一项叫做函数绑定的技术顾名思义,就是讲参数绑定到函数上,使一些非一元函数能够当作一元函数使用,准确的来说,不是哪些非一元函数本身能当做一元函数使用,而是一个名为bind的函数包装器能返回一个绑定过参数的函数对象。bind是一个函数,也是一个函数包装器,定义在<functional>头文件中简单的参数绑定假设搜索第一个大于长度n的字符串,可以用find_if,但是其接受一个一元谓词,那就可以用bind包装函数

2022-02-12 18:16:00 549

原创 C++——forward_list的插入操作

#include <iostream>#include <vector>#include <algorithm>#include <list>#include <forward_list>using namespace std;//查找s1,并在其后面添s2,没有找到在后面添加//别忘了fls传递引用void func(forward_list<string> & fls,const string & .

2022-02-11 11:54:01 534

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除