这是什么意思

What is mean this convert?

本文关键字:意思 是什么      更新时间:2023-10-16

i在C 中使用qtframework开发。我遇到了这种转换方法是static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)> (&QAbstractSocket::error)。但是我不明白这是什么意思?

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

在存在过载的情况下,该函数名称本身的地址本身是模棱两可的。您可以使用static_cast<>()来指定根据功能指针类型所隐含的功能签名使用的功能。

您问题中的演员选择信号是因为void (QTcpSocket::*)(QAbstractSocket::SocketError)是返回void并采用参数QAbstractSocket::SocketError的函数类型的指针。

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

static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)> (&QAbstractSocket::error)

其中:

&QAbstractSocket::error-是名为 error(...);

的函数的地址

它将其施放到void (QTcpSocket::*)(QAbstractSocket::SocketError)-这是一个指向(qtcpsocket)函数的指针,该功能采用参数QAbstractSocket::SocketError并返回void

因此,我们是从Qabstractsocket(也许是基类)的函数的地址铸造为QTCPSOCKECT(也许是派生类)的函数指针。

注意

塔拉马基(Talamaki如果您弄错了编译器时间错误的成本。我经常认为这更清楚(例如,这个问题可能不需要问)。以下是一个示例:

// Here we can explicitly choose the correct function,
// and its clear to any reader what is going on.
connect(pTcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
        this,       SLOT(errorHandler(QAbstractSocket::SocketError)));