由于std :: pair,GCC(MoSync)中的C ++构建错误

时间:2013-01-31 16:35:53

标签: c++ gcc compilation g++ mosync

我正在使用MoSync IDE为移动平台构建我的C ++代码。最初,C ++代码是由Visual Studio 2010单独构建的,没有任何问题。但是当我使用MoSync IDE重建C ++代码时,它会生成一些错误消息。我的C ++代码使用STL库,如std :: pair和std :: vector类。下面是在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,count)对。最初我在Visual Studio 2010中编译了这个C ++代码而没有任何错误。但是MoSync IDE中的GCC给了我这个错误消息。所以这让我感到很困惑,为什么这不能在GCC中建立。

1 个答案:

答案 0 :(得分:1)

vector<T>::iterator是依赖类型,因此您需要使用typename

typename vector<T>::iterator pt;

请参阅Where and why do I have to put the "template" and "typename" keywords?