我正在使用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中建立。
答案 0 :(得分:1)
vector<T>::iterator
是依赖类型,因此您需要使用typename
:
typename vector<T>::iterator pt;
请参阅Where and why do I have to put the "template" and "typename" keywords?