c++ - 这个转换是什么意思?

标签 c++ qt

我使用 C++ 中的 QtFramework 进行开发。我遇到的这个转换方法是static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)> (&QAbstractSocket::error) 。但我一直不明白这是什么意思?

最佳答案

QTcpSocket继承自基类QAbstractSocket。有一个方法SocketError error()和一个信号void error(QAbstractSocket::SocketError socketError)QAbstractSocket ,即具有相同的名称。

在存在重载的情况下,函数名称的地址本身是不明确的。您可以使用static_cast<>()根据函数指针类型隐含的函数签名来指定要使用哪个函数。

您问题中的 Actor 选择信号是因为 void (QTcpSocket::*)(QAbstractSocket::SocketError)是一个指向 QTcpSocket 中函数类型的指针,它返回 void并采用参数 QAbstractSocket::SocketError .

例如连接到QAbstractSocket::error使用函数指针语法的信号,必须在静态转换中指定信号类型。

关于c++ - 这个转换是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37901339/

相关文章:

c++ - QTimer: "multiple timeouts"可能吗?

qt - 不支持 ssl 套接字错误

c++ - RValue 引用行为

c++ - 通过函数传递 ifstream 文件时出错

Qt Creator/GDB - 调试 session 意外结束

c++ - Qt/OpenGL 中的着色器问题

c++ - 将 LEVEL 包含到 SysLog 日志文件中

c++ - 我对 C++ 中的 STL 相当陌生,我尝试使用 vector 制作堆。没有得到想要的输出

来自 Bridging-Header Obj-C++ 的 C++ header 问题

c++ - 刷新用作 QTableView 编辑器的 QComboBox 中的选项