[英]C++ build error in GCC (MoSync) due to std::pair
我正在使用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時,此模板函數計算直方圖,並返回“ counts”作為(bins,counts)對。 最初,我在Visual Studio 2010中編譯了此C ++代碼,沒有任何錯誤。 但是MoSync IDE中的GCC給了我這個錯誤消息。 因此,這讓我很困惑,為什么它不能在GCC中建立。
vector<T>::iterator
是從屬類型,因此您需要使用typename
:
typename vector<T>::iterator pt;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.