c++ - 如何从 void 指针访问结构中的属性?

标签 c++ pointers struct

我被分配了一项任务,我无法详细了解函数的作用,但我只知道 id 的一般作用。

所以我有一个函数,我们称它为“get_button”,在文档中我知道“它返回一个指向按钮结构的指针”。我知道按钮结构,它是这样的:

struct button{
    int size;
    char title;
    short keyID;
};

函数是这样的:

void * get_button(int ID, int group)

但我不知道它的作用。

现在我想知道标题,但在使用编译器时我得到了一个空指针作为返回。那么我应该如何使用这个 void 指针呢? ASAIK 我必须使用 static_cast 来引用它,但在这种情况下是一个结构;此外,我无法真正理解转换的含义以及如何让编译器知道我想要某个结构。

这是一个特殊情况,我需要知道如何将参数从 void 指针获取到结构中。我不知道我是否应该使用 static_cast 或其他什么(所以我无法理解对它的引用)。在这种情况下,我也不需要知道如何使用 propery 空指针!我只需要知道如何访问结构中的属性。 我在这里和那里看到了其他答案,但我找不到对这种情况有值(value)的东西。

最佳答案

i can't really understand what casting means

您在下一个问题中回答自己:

how to make the compiler know that i want a certain struct.

就是这样。转换意味着您告诉编译器该对象具有特定类型。

This is a particular case where i need to know how to get a parameter into a struct from a void pointer.

首先,将 void 指针转换为它指向的对象的指针类型:*button。然后,您可以在正确类型的指针上使用 operator-> 正常访问该属性。

I don't know if i should use a static_cast or whatever

当将 void 指针转换为另一种指针类型时,您确实应该使用 static_cast

void* void_pointer = get_button(ID, group); // get the pointer
button* button_pointer = static_cast<button*>(void_pointer); // cast to the type of the pointed object
int size = button_pointer->size; // access the attribute through the pointer

关于c++ - 如何从 void 指针访问结构中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35031489/

相关文章:

json - 我可以在 Swift 中声明一个名为 'Type' 的变量吗?

c++ - 无法运行任何c/c++程序

c++ - Google mock - 至少是多种期望中的一种

c - 为什么这个程序的打印输出没有停在 0 位?

c++ - gcc 相对于在新表达式中解析 type-id 发出错误

c - union 填充是否存在

java - 如何在java中读取使用python的struct.pack方法编写的字符串

c++ - 如何从 C++ 中的 vector 中删除节点

c++ - GLSL 将 gl_FragCoord.xy 映射到正交投影中的坐标

c++ - 对象创建期间的资源泄漏