問題タブ [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.

0 投票する
2 に答える
2435 参照

c++ - 新しいメンバ関数を d ポインタ クラスに追加すると、バイナリ互換性が失われますか?

新しいメンバー関数を d ポインター クラス定義に追加すると、バイナリ互換性が失われますか?

たとえば、以下の新しい定義は、元の定義と比較してバイナリ互換性を壊しますか? (副次的な質問ですが、新しい .so が古い .so と比較してバイナリ互換性を損なうかどうかを教えてくれるツールはありますか? そうでない場合、手動で確認するにはどうすればよいですか?)

オリジナル:

新しい:

参考:ヘッダーではなく、ccファイルでdポインタークラスを指定する必要があることを理解しています。上記の例は、バイナリ互換性の問題に焦点を当てるために考案されました。

0 投票する
1 に答える
272 参照

c++ - QExplicitlySharedPointer と継承

QExplicitlySharedPointer継承されたクラスを使用する最良の方法は何ですか。BaseClass が独自に終了するときに my d ポインターQExplicitlySharedPointer<BaseClassPrivate>を持ち、この基本クラスの上に Derived クラスがあるときに d を a にしたいと思いますQExplicitlySharedPointer<DerivedClassPrivate>

DerivedClassPrivate を BaseClassPrivate から継承させようとした後、d ポインターを保護し、派生クラスで d ポインターを再定義しようとしましたが、定義されているクラスに対してローカルな d ポインターのコピーが 2 つあるようです。で...これは私が望むものではありません。

0 投票する
2 に答える
3142 参照

c++ - 継承されたクラスのQtアクセスDポインター

私は、d-pointer全体がどのように機能するかを理解しようとしています。ほとんどの部品を入手しましたが、現在問題に直面しています。

ここの人のようにDpointer の継承私は、d-pointers を使用してクラスを継承したいと考えています (実際には QProcess です)。

dポインタにアクセスする関数はprivateなので、単純な継承ではアクセスできません。私の考えは、再び Q_DECLARE_PRIVATE マクロを使用して関数を取得し、それにアクセスすることです。これは機能しますか?試してみる前に、これが機能するかどうかわからないので、いくつかのヒントが必要です.

(ライセンスの問題全体を回避するためにこれが必要です。)

MyProcess.h

MyProcess.cpp

0 投票する
1 に答える
128 参照

c++ - 共有ライブラリ内の D ポインターと合成クラス

Qt5 C++ で共有ライブラリを作成しています。バイナリ互換性を維持しながら将来の更新を可能にするために、d-pointer 手法を使用したいと考えています。しかし、クラス構成がある場合の適用方法がわかりません。hereを含む私が見つけた例は、クラス継承の場合のみを説明しています。私の質問は

ライブラリ内の各クラス (myLib、B、および C) に対応するプライベート クラスを作成する必要がありますか?それとも、メインのクラス (myLib) のみに対応するプライベート クラスを作成する必要がありますか? また、後でそれらにアクセスする方法はありますか?

これが私のセットアップと、プライベート クラスのない目的の機能です。

myLib.h

Bh

チャンネル

そしてメインアプリのどこかに:

0 投票する
2 に答える
689 参照

c++ - dポインターの「d」は何の略ですか?

Qt は、開発プロセスで PIMPL イディオムを多用しています: https://wiki.qt.io/D-Pointer

私がここで読んだように: 「'd-pointer' という名前は、Trolltech の Arnt Gulbrandsen に由来します。彼はこの技術を Qt に最初に導入し、より大きなリリース間でもバイナリ互換性を維持する最初の C++ GUI ライブラリの 1 つにしました。」. しかし、「D」が何を表しているのかは誰にもわかりません。

では、D-Pointer の「D」は何の略ですか?