私はstd::vector<T>
を取るコンストラクタを持つテンプレートクラスを持っています。 1つのオブジェクトを除いたすべてのオブジェクトに対して、私は操作Aをしたい。しかし、その1つのオブジェクトに対しては、他のものをいくつか実行したい。B.異なるボディを持つメソッドのテンプレート明示的インスタンス化
テンプレートクラスのコンストラクタの明示的なインスタンス生成を作成する可能性はありますか? ?私はそれが十分に正確に記述されることを望む。
よろしく
アップデート:私は今、テストケースを実装している:
//header
Container(const std::vector<T>& source)
{...}
//source code
template <> Container<int>::Container(const std::vector<int>& source)
{
throw 42;
}
この例では、コンパイルしたが動作しません。これをdllにエクスポートして、汎用パラメータintを持つクラスのインスタンスを作成しようとするたびに呼び出されるようにしたいと考えています。しかし、今のように、他のすべてのオブジェクトに使用される標準のコンストラクタを呼び出すだけです。宣言に加えなければならない変更はありますか?
更新:私は成功しました!ヘッダーファイルにコピーするだけでした。
更新:もう、別の問題があります。私は「シンプルな」タイプを専門にすることはできますが、テンプレートはできません。私はそれをこの方法を試してみました:
template<typename T>
Container<MyClass<T>>::Container(const std::vecror<MyClass<T>>& source)
{...}
私はすべてのMyClassのオブジェクトのためにそれを専門としたいが、MyClassの自体がテンプレートとして生きすることができなければなりません。
それは十分ではありません。あなたは何をしたいのか疑似コードを少なくとも投稿できますか? –
*明示的なインスタンス化*を作成しますか?おそらく明示的な**特殊化**を作成することを意味します。インスタンス化を作成せず、インスタンス化を暗黙または明示的に起動できますが、作成されません。 –