使い方に基づいてクラスの型を宣言できるようにします。たとえば、3つのキューが接続された3ステージのパイプラインを作成します。キューとステージを正しく接続しているかどうかを確認したい(例:キューが正しい方向に、正しいユニットに移動しているなど)テンプレートを使用してC++で型を指定するには?
ここは私のものの非常に単純化された例です達成しようとしています:
template<class in, class out>
class Fifo: public queue{};
class Stage1; class Stage2; class Stage3;
class Stage1{
Fifo<Stage1,Stage2>* m_fifoOut;
};
class Stage2{
Fifo<Stage1,Stage2>* m_fifoIn;
Fifo<Stage2,Stage3>* m_fifoOut;
};
class Stage3{
Fifo<Stage2,Stage3>* m_fifoIn;
};
これを機能的に達成するより適切な方法はありますか?コンパイル時に、キューが正しく設定されていないことを知ることが望ましいです。しかし、私は、テンプレートを使用すると不要なクラスのコピーが生成されることを心配しています。
「不要なコピー」は本当に心配です。代わりに、テンプレートを使用してこれを全面的に実行するためのメンテナンスコストを心配しています。これは、ランタイム情報に基づいてパイプラインを構築する必要がある場合、部分的な書き直しを余儀なくされることを意味します。実行する前に設定をチェックする別のツールを書くことができます(たとえば、ファイルを使用してパイプライン設定を読み込み、テンプレートを使用せずに注文を実行するなど)。 – phooji