0

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 でのビルドに失敗する理由は非常にわかりません。

4

1 に答える 1

1

vector<T>::iterator依存型なので、使用する必要がありますtypename:

typename vector<T>::iterator pt;

「template」および「typename」キーワードをどこに、なぜ入力する必要があるのですか? を参照してください。

于 2013-01-31T16:39:33.617 に答える