我在某些地方看到
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/