Возможный дубликат:
Где и почему я должен поставить ключевые слова «template» и «typename»?
Я собираю Палабос с визуальной студией 2012.
Я получаю следующую ошибку:
Предупреждение 1, предупреждение C4346: ‘plb :: ExtractDynamicsChainFunctional2D :: DMap’: зависимое имя не является типом c: \ users \ max \ desktop \ drawing \ c ++ \ palabos \ src \ dataprocessors \ metastufffunctional2d.hh 100 1 Рисование
Ошибка 2 ошибка C2061: синтаксическая ошибка: идентификатор ‘DMap’ c: \ users \ max \ desktop \ drawing \ c ++ \ palabos \ src \ dataprocessors \ metastufffunctional2d.hh 100 1 Рисование
Код, вызывающий эту ошибку:
/* ******** 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_)
{ }
Мои знания с ++ очень ограничены. Может кто-нибудь объяснить, что вызывает эту ошибку, и как я могу это исправить.
Ошибка означает: ExtractDynamicsChainFunctional2D<T,Descriptor>::DMap
по умолчанию не тип и не может быть использован как таковой. Если вы хотите, чтобы он был распознан как тип, вы должны поставить typename
перед ней.
Проблема возникает только внутри шаблонного кода, где вы хотите получить доступ к типу элемента другого шаблона.
Других решений пока нет …