Qt4.8.3 を使用して、blackberry プレイブック用のネットワーク ベースのアプリを開発しています。その一部には、次のように QScopedPointer に QAbstractSocket を格納することが含まれます。
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 という数字はファイル記述子を指すことに注意してください)。
このエラーが表示される理由と修正方法を教えてください。
ありがとう、
ベン。
編集:ポインターを使用する代わりに、単一の QSslSocket を使用して、非 ssl モードのときに通常の QTcpSocket として扱うことができることに気付きました。はるかに簡単です。上記のエラーの理由を知りたいのですが、