我在某些地方看到
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 ++上执行此操作以访问其他结构参数?
答案 0 :(得分:0)
C中的这种外观继承。对于C ++和C,该标准确保不存在字段的重新排序。 因此,在C中,基本字段地址保证与整个结构相同。
C中的dri2_egl_config()似乎是一个普通的Funktion。在C ++中,它将是一个永远不会返回指针的构造函数。 如果您要考虑虚拟信息,那么C ++中的寻址也会更复杂。对于没有虚拟方法等的简单情况,如果您知道字段大小,仍可以通过地址偏移进行寻址。 但这需要强制转换才能使指针类型保持一致。因此,dri2_egl_config()似乎返回了dri2_egl_config *。这一切都是直截了当的。