Ошибка сборки C ++ в GCC (MoSync) из-за std :: pair

Я использую MoSync IDE для создания своего кода C ++ для мобильной платформы. Первоначально код C ++ был построен отдельно Visual Studio 2010 без каких-либо проблем. Но когда я использовал MoSync IDE для перестройки кода C ++, он выдал сообщение об ошибке. Мой код C ++ использует библиотеку STL, такую ​​как классы std :: pair и std :: vector. Ниже приведен код, который был скомпилирован как ошибка в IDE MoSync. MoSync использует GCC 3.4.6. Поэтому я предполагаю, что это вызвано компилятором GCC.

template<typename T>
vector< pair<T, int> > histogram(const vector<T>& x, int numBins)
{
T maxVal, minVal, range, delta, leftEdge, rightEdge;
int i, dummyIdx;
vector<T>::iterator pt;
vector< pair<T, int> > counts(numBins, make_pair(T(), 0));
vector<T> y(x);

//other code ...

}

Сообщение об ошибке:

ошибка: ожидается `; ‘ перед «pt» (строка 6)

Эта шаблонная функция вычисляет гистограмму, учитывая входной вектор x и numBins, и возвращает «count» как пару (bins, count). Первоначально я скомпилировал этот код C ++ в Visual Studio 2010 без каких-либо ошибок. Но GCC в MoSync IDE дал мне это сообщение об ошибке. Так что это сильно сбивает меня с толку, почему это не встраивается в GCC.

0

Решение

vector<T>::iterator это зависимый тип, поэтому вам нужно использовать typename:

typename vector<T>::iterator pt;

Увидеть Где и почему я должен поставить "шаблон" а также "имяТипа" ключевые слова?

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]