0

重複の可能性:
「template」および「typename」キーワードをどこに、なぜ配置する必要があるのですか?

Visual Studio 2012 で Palabos をコンパイルしています。次のエラーが表示されます。

警告 1 警告 C4346: 'plb::ExtractDynamicsChainFunctional2D::DMap': 依存する名前は型ではありません c:\users\max\desktop\drawing\c++\palabos\src\dataprocessors\metastufffunctional2d.hh 100 1 Drawing

エラー 2 エラー C2061: 構文エラー: 識別子 'DMap' c:\users\max\desktop\drawing\c++\palabos\src\dataprocessors\metastufffunctional2d.hh 100 1 Drawing

このエラーの原因となっているコードは次のとおりです。

/* ******** ExtractDynamicsChainFunctional2D ************************************ */
template<typename T, template<typename U> class Descriptor>
ExtractDynamicsChainFunctional2D<T,Descriptor>::ExtractDynamicsChainFunctional2D (
        ExtractDynamicsChainFunctional2D<T,Descriptor>::DMap const& dynamicsMap_,
        pluint maxChainSize_ )
    : dynamicsMap(dynamicsMap_),
      maxChainSize(maxChainSize_)
{ }

私の C++ に関する知識は非常に限られています。誰かがこのエラーの原因と、それを修正する方法を説明できますか?

4

1 に答える 1

3

エラーの意味:ExtractDynamicsChainFunctional2D<T,Descriptor>::DMapはデフォルトでは型ではなく、そのままでは使用できません。型として認識させたい場合はtypename、その前に置く必要があります。

この問題は、別のテンプレートのメンバー型にアクセスするテンプレート コード内でのみ発生します。

于 2012-11-26T09:01:52.897 に答える