我正在使用 Qt4.8.3 为黑莓剧本开发一个基于网络的应用程序,其中一部分涉及将 QAbstractSocket 存储在 QScopedPointer 中,如下所示:
QScopedPointer<QAbstractSocket> nntp;
在我的实现中,我存储一个 QSslSocket 或一个 QTcpSocket(两者都继承自 QAbstractSocket),具体取决于是否要加密连接,即
if(ssl) {
nntp.reset(new QSslSocket(this));
(dynamic_cast<QSslSocket*>(nntp.data())))->connectToHostEncrypted(server, port);
} else {
nntp.reset(new QTcpSocket(this));
nntp->connectToHost(server, port);
}
当沿着 ssl 路线走时(非 ssl 工作正常!),我最终遇到以下运行时错误:
virtual void QEventDispatcherBlackberry::unregisterSocketNotifier(QSocketNotifier*) bps_remove_fd() 失败 19
鉴于错误描述和代码在其他平台上按预期工作(在 mac 和 linux 上测试)的事实,该错误可能与黑莓相关。(注意,数字 19 指的是文件描述符)。
任何想法为什么我会看到此错误以及如何解决它?
谢谢,
本。
编辑:我刚刚意识到,在非 ssl 模式下,我可以只拥有一个 QSslSocket 并将其视为常规 QTcpSocket 而不是使用指针。容易得多。但是,我仍然想知道上述错误的原因