4

これがばかげた質問ではないことを願っていますが、私はテンプレート作成に非常に不慣れであり、この問題は私の頭を悩ませています。私はGUIデザインのためにQTDesignerに大きく依存するプロジェクトに取り組んでおり、複雑なサービスメカニズムとの相互作用を抽象化できる特別なQWidgetサブクラスを利用できるようにしたいと考えています。このウィジェットには、サービスを解決するためのクラス固有の情報が必要です。コーディング自体は、VisualStudio2008で行われます。

したがって、作成したいのは、テンプレート化されたQWidgetサブクラスです。限られた知識で、クラスの前で通常のテンプレートステートメントを叩いてみました。

template <class T>
class QmitkMyWidget :public QWidget

当然のことながら、これは簡単には機能しません。生成されたmocクラスが機能します。

error PRJ0019: A tool returned an error code from "Generating Qmitk/moc_QmitkMyWidget.cxx"

私は「彼らに何をすべきかを教えなかった」ので、これは私には一種の論理的なようです。QT Designer内でテンプレートを指定する必要があると思いますが、実際には方法がわかりません。残念ながら、検索ではQT Designerでコードテンプレートの結果が大量に見つかりますが、ジェネリックプログラミングの概念についてはわかりません。ヒントをいただければ幸いです&&|| 役立つ情報源/記事。御時間ありがとうございます!

編集:最初のコードの愚かなタイプミス= /

4

1 に答える 1

6

これは不可能であることを確認しました。出典: moc コンセプトの制限 moc

要点は、モックは前処理されますが、テンプレートはコンパイル時にのみ実際のコードに変換されるということです。

編集:クラス自体をテンプレート化する代わりに、パブリック関数のみをテンプレート化していることを追加できます。これは、これまでのところ非常にうまく機能しますが、もちろん、消費者が関数を呼び出すたびに宣言を入力する必要があります。

于 2012-07-19T14:17:42.553 に答える