2016-10-22 1 views
2

は、次のコードを考えてみて、ネストされたテンプレートクラスから継承することができます。はどのようにテンプレートクラスは

template<class C, class P> 
//class Cchild : public C::NestedClass    // Works 
class Cchild : public C::NestedTemplateClass<P>  // Fails : how to inherit from nested template class defined in C ? 
{ 
}; 

コンパイラは罰金コンパイル時に、ネストされたクラスC::NestedClassからテンプレートクラスCchild継承。しかし、Cchildがネストされたテンプレートクラスから継承したい場合、コンパイルに失敗しますC::NestedTemplateClass<P>

どのようにすればいいですか?

答えて

3

構文は次のとおりです。

template<class C, class P> 
class Cchild : public C::template NestedTemplateClass<P> 
{ 
}; 

GCCからのエラーメッセージが実際には非常に読みました:

t.C:3:26: error: non-template ‘NestedTemplateClass’ used as template 
class Cchild : public C::NestedTemplateClass<P> 
          ^~~~~~~~~~~~~~~~~~~ 
t.C:3:26: note: use ‘C::template NestedTemplateClass’ to indicate that it is a template 
+0

私もこの構文を試してみましたが、どうやらありません。そして、もし私が 'vc'の代わりに' gcc'を使っていたら、おそらくエラーメッセージで答えを得るでしょう。おかげさまでサム。 – shrike

関連する問題