MoSync IDE を使用して、モバイル プラットフォーム用の C++ コードをビルドしています。最初に、C++ コードは Visual Studio 2010 によって問題なく個別にビルドされました。しかし、MoSync IDE を使用して C++ コードを再構築すると、エラー メッセージが生成されました。私の C++ コードでは、std::pair や std::vector クラスなどの STL ライブラリを使用しています。以下は、MoSync IDE でエラーとしてコンパイルされたコードです。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 を指定してヒストグラムを計算し、(bins, counts) のペアとして「counts」を返します。もともと、この C++ コードを Visual Studio 2010 でエラーなしでコンパイルしました。しかし、MoSync IDE の GCC でこのエラー メッセージが表示されました。したがって、これが GCC でのビルドに失敗する理由は非常にわかりません。