Я использую 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.
vector<T>::iterator
это зависимый тип, поэтому вам нужно использовать typename
:
typename vector<T>::iterator pt;
Увидеть Где и почему я должен поставить "шаблон" а также "имяТипа" ключевые слова?
Других решений пока нет …