我是在虚拟引擎C++工作,并希望获取一个静态网格的顶点法线。为此,我使用了GetTangentData()方法,该方法属于FStaticMeshVertexBuffer类(链接)。
GetTangentData()方法在文档中定义了两种方法(link1,link2):
void * GetTangentData()
const void * GetTangentData() const
我的理解是,这是一个getter函数。但是,我不知道为什么它有一个空指针返回类型。下面一行编译,但我不确定如何访问数据:
void* TangentData = StaticMeshVertexBuffer->GetTangentData();
Q1.有空指针返回类型的原因是什么?
Q2.如何才能从这样的返回中访问数据?
发布于 2022-11-21 01:19:12
Q1.为什么会有一个空指针返回类型?
void*是指向某物的指针,但它是未知的。因此,void*具有一定程度的灵活性,因此可以将其转换为多种类型的指针。例如,malloc有一个返回类型的void*,因为它应该用于为所有类型的指针分配内存。在C++中,我们可以编写函数重载代码,因为存在模板,所以void*更像是C类。在C++中使用它来保持与C的向后兼容性,用于设计用于C++和C的库。
Q2.如何才能从这样的返回中访问数据?
你把它打出来:
void* void_ptr = func_that_returns_void_ptr();
char* char_ptr_typecast = (char*) void_ptr;
std::cout << char_ptr_typecast << '\n';https://stackoverflow.com/questions/74513172
复制相似问题