1
次のように特殊な構造体/クラスを継承することはできますか?特殊化されたテンプレート構造体/クラスから継承する
template<class TKey, class TData>
struct Container
{
virtual void Add(TKey key, TData data) = 0;
};
template<class TData>
struct Container<int, TData>
{
virtual void Add(int key, TData data) = 0;
};
struct TicketContainer : public Container<std::string>
{
void Add(int key, std::string data)
{
}
};
私は宣言少なすぎるテンプレートパラメータを訴えてTicketContainer
宣言でエラーが発生します。
良いヒント:このケースでは、(連想コンテナは通常、その後
key
value
宣言されて反直感的であるかもしれない)TKey
とTValue
を並べ替えする必要があります、それはまだ知っていることは良いです。私は、部分的な専門化が、既に定義されたテンプレートパラメータを指定する負担を取り除くことを望んでいました。 – user460762いいえ、そうではありません。これは、特殊タイプが 'Container'に指定されている場合、部分的に特殊化された実装を選択することを意味します(この場合、特別な動作はありません)。 – hmjd