Шаблоны C ++: ошибка аргумента шаблона - PullRequest
1 голос
/ 16 ноября 2011

У меня

    template <typename ConcContainer>
    class WebBrowsingPolicyData
    {
    public:
        typedef ConcContainer<std::shared_ptr<WBRuleDetails>>::iterator iterator;
    ...
    private:
    ConcContainer<std::shared_ptr<WBRuleDetails>> usersData_;
    CRITICAL_SECTION critSection

Я получаю ошибку компиляции в строке (Ошибка 6 ошибка C2238: неожиданный токен (ы) перед ';')

typedef ConcContainer<std::shared_ptr<WBRuleDetails>>::iterator iterator

Как мне сделатьtypedef внутри шаблона?Должно быть, я что-то упустил ..

Ответы [ 2 ]

3 голосов
/ 16 ноября 2011

ConContainer сам по себе является шаблоном, поэтому он должен быть параметром шаблона шаблона:

template <template <typename T> class ConcContainer>
class WebBrowsingPolicyData
{
public:
    typedef typename ConcContainer<std::shared_ptr<WBRuleDetails>>::iterator iterator;
};
0 голосов
/ 16 ноября 2011

Две возможности:

  1. У компилятора проблемы с >>.Вставьте пробел.Обратите внимание, что если вы используете компилятор, совместимый с C ++ 11, это не должно вызывать проблем.

пример:

typedef ConcContainer<std::shared_ptr<WBRuleDetails> >::iterator iterator;
  1. ConcContainerне имеет члена или typedef iterator.Убедитесь, что это действительно так.

РЕДАКТИРОВАТЬ: Это не самый неприятный анализ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...