gpt4 book ai didi

c++ - 为什么 Qt 对 void* 使用 reinterpret_cast 而不是 static_cast?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:05:41 25 4
gpt4 key购买 nike

您可以使用 static_cast 将任何指向 T 的指针转换为 void* 或将其转换为 void*,为什么 Qt 使用 reinterpret_cast?

int SOME_OBJECT::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
_id = QMainWindow::qt_metacall(_c, _id, _a);
if (_id < 0)
return _id;
if (_c == QMetaObject::InvokeMetaMethod) {
switch (_id) {
// Why reinterpret_cast here??
case 0: on_tabWidget_tabCloseRequested((*reinterpret_cast< int(*)>(_a[1]))); break;
default: ;
}
_id -= 1;
}
return _id;
}

最佳答案

老实说,我也一直没弄明白。 void ** 结构的创建方式相同,只需将 int* 转换为 void* ,然后在另一侧执行这种奇怪的转换.据我所知,static_cast 不仅可以,而且会更好。

你会发现像Qt这样的大型项目中有很多有问题的代码。有时,一些东西会通过审查或只是留下来,因为没有人愿意经历更改它的麻烦。

关于c++ - 为什么 Qt 对 void* 使用 reinterpret_cast 而不是 static_cast?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5047054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com