C ++, ошибка аргумента шаблона - PullRequest
3 голосов
/ 16 марта 2012

Ниже приведена матрица моего шаблона, которую я хочу построить, взяв значение от пользователя.Но когда я это скомпилирую.Я получаю ниже ошибки.Почему ошибка?

SO_template.cpp: в функции-члене void Matrix<T>::BuildMatrix(std::vector<T, std::allocator<_CharT> >)': SO_template.cpp:44: error: expected; 'перед "it"

Если я специализируюсь на своем классе, используя int, он не жалуется, почему?

 template<class T>
  class Matrix
  {
    private:
          vector<T> col;
          int iNumberOfRow;
          int iNumberOfCol;
    public:
     void BuildMatrix(const std::vector<T> stringArray)
     {

         std::vector<T>::iterator it= stringArray.begin();
         cout<<"Build Matrix irow="<<stringArray.size();
         ...
         ...
     }
};

1 Ответ

6 голосов
/ 16 марта 2012

Проблема в том, что std::vector<T>::iterator является «зависимым типом» - весь тип зависит от T. Для исправления проблемы добавьте префикс typename, поэтому в строке введите

typename std::vector<T>::iterator it= stringArray.begin();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...