我在某些地方看到
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 中,基字段地址保证与整个结构相同。
dri2_egl_config(( 在 C 中似乎是一个正常的函数。 在C++中,它将是一个永远不会返回指针的构造函数。此外,如果您考虑虚拟信息,C++中的地址会更复杂。对于没有虚拟方法等的简单情况,如果您知道字段大小,您仍然可以通过地址偏移量进行寻址。但这需要强制转换才能使指针类型保持一致。因此,dri2_egl_config(( 似乎返回一个dri2_egl_config *。这一切都是直截了当的 C。