状況
私は特定のデータ型を保持するコンテナを実装しようとしています - それをCとしましょう。コンテナ(Bと呼ぶ)はAの内部クラスです。テンプレートを宣言しようとしていますコンパイラの問題を抱えていて、何をすべきか分からない。定型テンプレートを含むクラスのテンプレート?
試み
template <typename T<C>>
class A
{
class B
{
typedef std::unique_ptr<T> containerPtr;
private:
containerPtr container;
}
}
typedef std::shared_ptr<A<std::vector<C>>> somePtr; // Error!
エラーがある:
構造体C
タイプ名が
template <typename T,U>
class A
{
class B
{
typedef std::unique_ptr<T<U>> containerPtr;
private:
containerPtr container; // But does it contain C or some other type now?
// We have to do a check - what's the best approach?
}
}
typedef std::shared_ptr<A<std::vector<C>>> somePtr;
を許可されていません0
この状況ではどのような方法が最適ですか?
ワウ - 追加の編集済みの回答を私に渡す前に、あなたの答えを受け入れたかったのです。あなたは私がしたいことについて私の心を読んでいます。どうもありがとうございました! (私は第二のアプローチをしようとしていましたが、私が最初に解決することを躊躇して決定しました) ''が何をしているのか説明できますか? –
OneRaynyDay
@OneRaynyDayここでの一般的なアプローチは、*テンプレートテンプレート引数*と呼ばれ、テンプレートの引数としてテンプレートを提供しています。 'template class T>という表記は、引数が' T'という名前のテンプレートクラスであり、テンプレートクラスが必要とする引数の数には関わりがないことを意味します。 –
templatetypedef
ああ、ありがとう!そして、特にテクニックの名前を教えてくれてありがとう - 私は何がGoogleに何を知らないので、主にテンプレートで立ち往生していることがわかります。ほんとうにありがとう。 – OneRaynyDay