c++ - 如何加载知道第一个元素的结构?

标签 c++ c struct c99

我在某些地方看到

struct dri2_egl_config *dri2_conf = dri2_egl_config(conf);

结构体在哪里

struct dri2_egl_config
{
   _EGLConfig         base;
   const __DRIconfig *dri_single_config;
   const __DRIconfig *dri_double_config;
};

conf_EGLConfig*
但是当我在 C++ 上尝试这个时,它无法编译。如何在 C++ 上执行此操作以访问其他结构参数?

最佳答案

这看起来像 C 中的继承。对于 C++ 和 C,该标准确保不会对字段进行重新排序。 因此,在 C 中,保证基字段地址与整个结构相同。

C 中的 dri2_egl_config() 似乎是一个普通的 Funktion。在 C++ 中,它将是一个从不返回指针的构造函数。 另外,如果必须考虑虚拟信息,C++ 中的寻址会更加复杂。对于没有虚拟方法等的简单情况,如果您知道字段大小,您仍然可以通过地址偏移量进行寻址。 但这需要强制转换才能使指针类型保持一致。因此, dri2_egl_config() 似乎返回一个 dri2_egl_config *。这都是直截了当的 C.

关于c++ - 如何加载知道第一个元素的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27572710/

相关文章:

c - C中遍历字符串中的字符进行分析

c - 链表不在C中添加元素

c - 复制传递给函数的字符串作为 C 中的参数

c++ - 获得完整整数乘法的高半部分和低半部分

c - 在 C 中将字节数组写回到磁盘上的原始状态

c++ - 计算由于在 C 中打包而产生的开销 (gcc/g++)

c - 调用更改结构体值的函数时出现问题

使用结构体指针函数创建结构体数组的元素

c++ - VS2008 传递变量 - 结构与结构组件 - 优点/缺点?

c++ - VisualStudio2008 上的 std::vector 似乎没有得到最佳实现 - 太多的复制构造函数调用