2016-07-26 5 views
0

Qtオブジェクトにpimplイディオムを実装する最も簡単な方法を知りたいと思います。QimとQObjectのサブクラスでpimplイディオムを使用する方法

pimpl.h:

class B; 

class A: public QObject { 
    B *b; 
} 

pimpl.cxx:私は何がしたいことは、このようなものである

class B: public QObject { 
} 

、明らかなように、QtはへのクラスBに合格しませんそのためのmocを作成します。どのようにこれを処理することができますか?私は.cxxにBの実装を明示的にしたいと思っています。

+0

[QtのPIMPLイディオムを使用する方法](http://stackoverflow.com/questions/25250171/how-to-use-the-qts-pimpl-idiom) – TheDarkKnight

+0

@TheDarkKnightできるだけ早く参照してください、リンクされた答えの 'QObject'であるimplクラス自体の言及はありませんので、私は開いたままにしました。 – anderas

答えて

4

Bの定義を含むpimpl-private.hを作成することができます.pimpl.cxx以外の場所には含まれません。次に、このヘッダーにmocを実行できます。

+0

はい、これは問題ありません。しかし、私はもっと慣れているので、できるだけ.cxxファイルに保存することができれば、ハックを探していました。ほとんどの場合、そこにタイプを宣言して/ includeする必要はありません。 –

+0

@code_not_yet_complete:https://stackoverflow.com/questions/34928933/why-is-important-to-include-moc-file-at-end-of-a-qt-source-code-fileを参照してください。 – peppe

1

最後(!)「pimpl.cxx」と再実行されているのqmakeので

#inlude "pimpl.moc" 

を追加することにより、.cppファイル内のコードを持つことが可能です。これは、mocを通してファイルを実行するためのMakefiuleルールを生成し、出力を "pmipl.moc"に入れて、すべてが魔法のように動作するようにします。

関連する問題