問題タブ [d-pointer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 新しいメンバ関数を d ポインタ クラスに追加すると、バイナリ互換性が失われますか?
新しいメンバー関数を d ポインター クラス定義に追加すると、バイナリ互換性が失われますか?
たとえば、以下の新しい定義は、元の定義と比較してバイナリ互換性を壊しますか? (副次的な質問ですが、新しい .so が古い .so と比較してバイナリ互換性を損なうかどうかを教えてくれるツールはありますか? そうでない場合、手動で確認するにはどうすればよいですか?)
オリジナル:
新しい:
参考:ヘッダーではなく、ccファイルでdポインタークラスを指定する必要があることを理解しています。上記の例は、バイナリ互換性の問題に焦点を当てるために考案されました。
c++ - QExplicitlySharedPointer と継承
QExplicitlySharedPointer
継承されたクラスを使用する最良の方法は何ですか。BaseClass が独自に終了するときに my d ポインターQExplicitlySharedPointer<BaseClassPrivate>
を持ち、この基本クラスの上に Derived クラスがあるときに d を a にしたいと思いますQExplicitlySharedPointer<DerivedClassPrivate>
。
DerivedClassPrivate を BaseClassPrivate から継承させようとした後、d ポインターを保護し、派生クラスで d ポインターを再定義しようとしましたが、定義されているクラスに対してローカルな d ポインターのコピーが 2 つあるようです。で...これは私が望むものではありません。
c++ - 継承されたクラスのQtアクセスDポインター
私は、d-pointer全体がどのように機能するかを理解しようとしています。ほとんどの部品を入手しましたが、現在問題に直面しています。
ここの人のようにDpointer の継承私は、d-pointers を使用してクラスを継承したいと考えています (実際には QProcess です)。
dポインタにアクセスする関数はprivateなので、単純な継承ではアクセスできません。私の考えは、再び Q_DECLARE_PRIVATE マクロを使用して関数を取得し、それにアクセスすることです。これは機能しますか?試してみる前に、これが機能するかどうかわからないので、いくつかのヒントが必要です.
(ライセンスの問題全体を回避するためにこれが必要です。)
MyProcess.h
MyProcess.cpp
c++ - 共有ライブラリ内の D ポインターと合成クラス
Qt5 C++ で共有ライブラリを作成しています。バイナリ互換性を維持しながら将来の更新を可能にするために、d-pointer 手法を使用したいと考えています。しかし、クラス構成がある場合の適用方法がわかりません。hereを含む私が見つけた例は、クラス継承の場合のみを説明しています。私の質問は
ライブラリ内の各クラス (myLib、B、および C) に対応するプライベート クラスを作成する必要がありますか?それとも、メインのクラス (myLib) のみに対応するプライベート クラスを作成する必要がありますか? また、後でそれらにアクセスする方法はありますか?
これが私のセットアップと、プライベート クラスのない目的の機能です。
myLib.h
Bh
チャンネル
そしてメインアプリのどこかに:
c++ - dポインターの「d」は何の略ですか?
Qt は、開発プロセスで PIMPL イディオムを多用しています: https://wiki.qt.io/D-Pointer
私がここで読んだように: 「'd-pointer' という名前は、Trolltech の Arnt Gulbrandsen に由来します。彼はこの技術を Qt に最初に導入し、より大きなリリース間でもバイナリ互換性を維持する最初の C++ GUI ライブラリの 1 つにしました。」. しかし、「D」が何を表しているのかは誰にもわかりません。
では、D-Pointer の「D」は何の略ですか?