Base
クラス用に明示的にインスタンス化されているが、クラス用にはインスタンス化されていないテンプレート関数がありますDerived
。Derived
クラス(または他の派生クラス)を渡す使用をクラスと一致させるにはどうすればよいBase
ですか?
ヘッダーファイル:
class Base {
};
class Derived : public Base {
};
class Derived2 : public Base {
};
template <typename Example> void function(Example &arg);
実装ファイル:
// Explicitly instantiate Base class:
template void function<Base>(Base &arg);
// Define the template function:
template <typename Example> void function(Example &arg) {
// Do something.
}
Derived
またはの関数を明示的にインスタンス化していないため、未定義の参照を取得しますが、明示的に定義されているクラスDerived2
に対してバインドしたいと思います。Base
C ++-03を使用してBaseから派生したすべてのオブジェクトについて、テンプレートを強制的にBaseクラスに解決するにはどうすればよいですか?
Derived
クラスをBase
クラス定義に特化して、どうにかしてそれを行うことはできますか?